DOM aider

  • the_Maven
  • Graduate
  • Graduate
  • No Avatar
  • Inscription: Fév 02, 2004
  • Messages: 196
  • Status: Offline

Message Mars 22nd, 2004, 8:06 am

J'ai écrit un code Javascript qui est censé valider un formulaire.
Mais quand je le lance, j'obtiens une erreur:

window.document.Form.Name est nulle ou non un objet.

Voici les éléments fondamentaux de mon code:
-------------------------------------------------- -----------------------------

Code: [ Select ]
var N = window.document.Form.Name;

function Verify(Form) {
   if (N.value == "") {
     window.alert("Please enter your name.");
     N.focus();
     return false;
   } else {
   if (N.value == "Name") {
     window.alert ("'Your Name' is invalid: Please try again.");
     N.focus();
     N.select();
     return false;
   } else {
     return true;
}
  1. var N = window.document.Form.Name;
  2. function Verify(Form) {
  3.    if (N.value == "") {
  4.      window.alert("Please enter your name.");
  5.      N.focus();
  6.      return false;
  7.    } else {
  8.    if (N.value == "Name") {
  9.      window.alert ("'Your Name' is invalid: Please try again.");
  10.      N.focus();
  11.      N.select();
  12.      return false;
  13.    } else {
  14.      return true;
  15. }

------------------ la forme ------------

Code: [ Select ]
<form name="Form" onsubmit="return Verify(Form)">
<input name="Name" type="text" class="type" value="Your Name" tabindex="1" size="68" maxlength="60" />
<input type="submit" value="Send" tabindex="5" name="Send" />
</form>
  1. <form name="Form" onsubmit="return Verify(Form)">
  2. <input name="Name" type="text" class="type" value="Your Name" tabindex="1" size="68" maxlength="60" />
  3. <input type="submit" value="Send" tabindex="5" name="Send" />
  4. </form>


Je suis perplexe. Toute l'aide pour cette serait grandement appréciée. [/ Code]
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 22nd, 2004, 8:06 am

  • RichB
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mai 17, 2003
  • Messages: 1121
  • Loc: Boston
  • Status: Offline

Message Mars 22nd, 2004, 8:54 am

Essayez de déplacer la déclaration de la variable pour le N à l'intérieur de la fonction. En supposant que vous avez cette fonction à l'intérieur de la tête. Code en dehors d'une fonction qui va être évalué immédiatement afin que vous essayez d'accéder à la zone de texte avant qu'il n'ait été créé depuis la variable d'affectation à la tête qui va se passer avant que le texte est vu / créé par le navigateur.
Free Programming Resources
  • the_Maven
  • Graduate
  • Graduate
  • No Avatar
  • Inscription: Fév 02, 2004
  • Messages: 196
  • Status: Offline

Message Mars 22nd, 2004, 1:23 pm

merci pour cette astuce. qui fonctionne avec la première zone de texte dans le formulaire. la validation entre en jeu lorsque la boîte perd le focus. mais il ne fonctionne pas avec les autres éléments. Toutes les fonctions sont dans le même fichier de script externe. devraient-ils être séparés dans les balises script? le code est ci-dessous...et est-il un moyen plus facile de le faire, puisque le code pour chaque fonction sont similaires?

Code: [ Select ]
function Verify(Name) {
var N = document.Form.Name;
if (N.value == "") {window.alert("Please enter your name."); N.focus(); return false;} else {
if (N.value == "Name") {window.alert("'Name' is invalid: Please try again.");
    N.focus(); N.select(); return false; } else {return true;}
}
function Verify(Mail) {
var E = document.Form.Mail;
if (E.value == "") {window.alert("Please enter your name."); E.focus(); return false;} else {
if (E.value == "Email") {window.alert("'Email' is invalid: Please try again.");
    E.focus(); E.select(); return false; } else {return true;}
}
function Verify(Subj) {
var S = document.Form.Subj;
if (S.value == "") {window.alert("Please enter your name."); S.focus(); return false;} else {
if (S.value == "Email") {window.alert("'Subject' is invalid: Please try again.");
    S.focus(); S.select(); return false; } else {return true;}
}
function Verify(Mess) {
var M = document.Form.Mess;
if (M.value == "") {window.alert("Please enter a message."); M.focus();    return false;}
if (M.value == "Your Message") {window.alert("'Message is nvalid: Please try again.");
    M.focus(); M.select(); return false; } else {return true;}}}}}
  1. function Verify(Name) {
  2. var N = document.Form.Name;
  3. if (N.value == "") {window.alert("Please enter your name."); N.focus(); return false;} else {
  4. if (N.value == "Name") {window.alert("'Name' is invalid: Please try again.");
  5.     N.focus(); N.select(); return false; } else {return true;}
  6. }
  7. function Verify(Mail) {
  8. var E = document.Form.Mail;
  9. if (E.value == "") {window.alert("Please enter your name."); E.focus(); return false;} else {
  10. if (E.value == "Email") {window.alert("'Email' is invalid: Please try again.");
  11.     E.focus(); E.select(); return false; } else {return true;}
  12. }
  13. function Verify(Subj) {
  14. var S = document.Form.Subj;
  15. if (S.value == "") {window.alert("Please enter your name."); S.focus(); return false;} else {
  16. if (S.value == "Email") {window.alert("'Subject' is invalid: Please try again.");
  17.     S.focus(); S.select(); return false; } else {return true;}
  18. }
  19. function Verify(Mess) {
  20. var M = document.Form.Mess;
  21. if (M.value == "") {window.alert("Please enter a message."); M.focus();    return false;}
  22. if (M.value == "Your Message") {window.alert("'Message is nvalid: Please try again.");
  23.     M.focus(); M.select(); return false; } else {return true;}}}}}


heres the code i forme ont:

Code: [ Select ]
<form name="Form"><div style="width:100%; vertical-align:top">

<input name="Name" type="text" class="type" value="Name" onblur="javascript:Verify(Name)"
tabindex="1" size="68" maxlength="60" /><br /><br />

<input name="Mail" type="text" class="type" value="Email" onblur="javascript:Verify(Mail)"
tabindex="2" size="68" maxlength="60" /><br /><br />

<input name="Subj" type="text" class="type" value="Subject" onblur="javascript:Verify(Subj)"
tabindex="3" size="68" maxlength="60" /><br /><br />

<textarea name="Mess" class="type" onblur="javascript:Verify(Mess)"
cols="51" rows="20" tabindex="4">Your message here.</textarea><br /><br />

<input type="submit" value="Send" tabindex="5" name="Send" /> &nbsp;&nbsp;
<input name="reset" type="reset" tabindex="6" value="Clear" />
</div></form>
  1. <form name="Form"><div style="width:100%; vertical-align:top">
  2. <input name="Name" type="text" class="type" value="Name" onblur="javascript:Verify(Name)"
  3. tabindex="1" size="68" maxlength="60" /><br /><br />
  4. <input name="Mail" type="text" class="type" value="Email" onblur="javascript:Verify(Mail)"
  5. tabindex="2" size="68" maxlength="60" /><br /><br />
  6. <input name="Subj" type="text" class="type" value="Subject" onblur="javascript:Verify(Subj)"
  7. tabindex="3" size="68" maxlength="60" /><br /><br />
  8. <textarea name="Mess" class="type" onblur="javascript:Verify(Mess)"
  9. cols="51" rows="20" tabindex="4">Your message here.</textarea><br /><br />
  10. <input type="submit" value="Send" tabindex="5" name="Send" /> &nbsp;&nbsp;
  11. <input name="reset" type="reset" tabindex="6" value="Clear" />
  12. </div></form>
  • CazpianXI
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Déc 22, 2003
  • Messages: 285
  • Status: Offline

Message Mars 22nd, 2004, 1:23 pm

Heres vos problèmes:

1. Var "N" devrait être à l'intérieur de la fonction.
2. Un couple «si» les déclarations n'ont jamais été fermés par un ")"

Ci-dessous le code corrigé. (Je l'ai testé et il fonctionne)

Code: [ Select ]
<script language="javascript">
function Verify(Form) {
var N = window.document.Form.Name;
   if (N.value == "") {
     window.alert("Please enter your name.");
     N.focus();
     return false;
   } else {
     if (N.value == "Name") {
       window.alert ("'Your Name' is invalid: Please try again.");
       N.focus();
       N.select();
       return false;
     } else {
       return true;
     }
   }
}

</script>

<form name="Form" onsubmit="return Verify(Form)">
<input name="Name" type="text" class="type" value="Your Name" tabindex="1" size="68" maxlength="60" />
<input type="submit" value="Send" tabindex="5" name="Send" />
</form>
  1. <script language="javascript">
  2. function Verify(Form) {
  3. var N = window.document.Form.Name;
  4.    if (N.value == "") {
  5.      window.alert("Please enter your name.");
  6.      N.focus();
  7.      return false;
  8.    } else {
  9.      if (N.value == "Name") {
  10.        window.alert ("'Your Name' is invalid: Please try again.");
  11.        N.focus();
  12.        N.select();
  13.        return false;
  14.      } else {
  15.        return true;
  16.      }
  17.    }
  18. }
  19. </script>
  20. <form name="Form" onsubmit="return Verify(Form)">
  21. <input name="Name" type="text" class="type" value="Your Name" tabindex="1" size="68" maxlength="60" />
  22. <input type="submit" value="Send" tabindex="5" name="Send" />
  23. </form>


Hope this helps!
  • RichB
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mai 17, 2003
  • Messages: 1121
  • Loc: Boston
  • Status: Offline

Message Mars 22nd, 2004, 3:36 pm

Je pense que tu pourrais probablement utiliser une seule fonction et l'appeler avec des arguments différents:

Code: [ Select ]
function Verify(field,message) {
    if (field.value == "") {
        window.alert("Please enter your " + message);
        field.focus();
        return false;
    }
    else {
        if (field.value == message) {
            window.alert(message + " is invalid: Please try again.");
          field.focus();
            field.select();
            return false;
        }
    }
    return true;
}
  1. function Verify(field,message) {
  2.     if (field.value == "") {
  3.         window.alert("Please enter your " + message);
  4.         field.focus();
  5.         return false;
  6.     }
  7.     else {
  8.         if (field.value == message) {
  9.             window.alert(message + " is invalid: Please try again.");
  10.           field.focus();
  11.             field.select();
  12.             return false;
  13.         }
  14.     }
  15.     return true;
  16. }


et puis l'appeler avec:

Code: [ Select ]
Verify(this,'Name')
Verify(this,'Email')
Verify(this,'Subject')
Verify(this,'Your message')
  1. Verify(this,'Name')
  2. Verify(this,'Email')
  3. Verify(this,'Subject')
  4. Verify(this,'Your message')


comme longs comme vous l'appelez de onblur l'intérieur des éléments individuels eux-mêmes forment alors le cet mot-clé peut être utilisé pour passer du champ à l'appel de fonction et que vous n'avez pas à déclarer une variable distincte depuis son d'un paramètre de la fonction.

Tags utilisation Dont l'intérieur d'un script externe. Js - juste le code javascript. Également veiller à fermer votre conditionnelles, je pense que vous manque des crochets dans CazpianXI là comme mentionné.
Free Programming Resources
  • the_Maven
  • Graduate
  • Graduate
  • No Avatar
  • Inscription: Fév 02, 2004
  • Messages: 196
  • Status: Offline

Message Mars 22nd, 2004, 4:01 pm

J'ai essayé le code et il fonctionne, mais je ne pense pas que la vérification de la onblur méthode est la meilleure façon de le faire...désolé de poser tant de choses, mais pas un pro im à javascript - il ya beaucoup, je dois encore apprendre. y at-il un moyen de vérifier tous les quatre en utilisant <form onsubmit =...?

thanks so much for the help.
  • RichB
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mai 17, 2003
  • Messages: 1121
  • Loc: Boston
  • Status: Offline

Message Mars 22nd, 2004, 4:18 pm

Vous pouvez ajouter une fonction Valider qui appelle la fonction Vérifier pour chaque champ et renvoie uniquement vrai si ils tous passer le test (il ne sera return false dès que l'on échoue à l'essai):

Code: [ Select ]
function Validate() {
    return(    
            Verify(document.Form.Name,'Name') &&
            Verify(document.Form.Mail,'Email') &&
            Verify(document.Form.Subj,'Subject') &&
            Verify(document.Form.Mess,'Your message')
         )
}
  1. function Validate() {
  2.     return(    
  3.             Verify(document.Form.Name,'Name') &&
  4.             Verify(document.Form.Mail,'Email') &&
  5.             Verify(document.Form.Subj,'Subject') &&
  6.             Verify(document.Form.Mess,'Your message')
  7.          )
  8. }


et d'appeler ensuite à partir de onsubmit:

Code: [ Select ]
<form name="Form" onsubmit="return Validate()">
Free Programming Resources
  • the_Maven
  • Graduate
  • Graduate
  • No Avatar
  • Inscription: Fév 02, 2004
  • Messages: 196
  • Status: Offline

Message Mars 22nd, 2004, 7:47 pm

Je vous remercie de votre aide-moi à cet égard. Mauvais souvenir. :D
  • CazpianXI
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Déc 22, 2003
  • Messages: 285
  • Status: Offline

Message Mars 23rd, 2004, 2:02 pm

Well, thats pourquoi Ozzus ici...aider les webmasters webmasters!

Afficher de l'information

  • Total des messages de ce sujet: 9 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 103 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC