Probleme dans le code

Bonjour,

j'aimerai savoir la correction de ce code:

function validateForm(){
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) {
document.getElementById('mail').innerHTML="Not a valid e-mail address";

}

var element = document.getElementByName["userEmail"].value;

element.keyup=validateForm;
var myfuction=validateForm;

element.addEventListener('keyup',myfuction, false);

3 réponses

  1. Bonjour

    En fait, il n'y a pas grand chose de juste dans ton code :

    1 - Où est définie la variable x utilisée dans ta fonction validateForm ?

    2 - Il y avait le problème d'accolade signalé par Zephirr - Perso, j'aurais plutôt ajouté une accolade fermante, mais sa solution est valable aussi.

    3 et 4 -
    getElementByName["userEmail"]
    comporte deux erreurs : document n'a pas de méthode getElementByName. Je connais getElementById et getElementsByName (avec un "s" à Elements, et c'est logique car il peut y en avoir plusieurs qui ont le même nom). Sauf raison bien particulière, utilise toujours getElementById.
    De plus, il s'agit d'une méthode, c'est à dire d'une fonction : ses paramètres doivent être mis entre parenthèses, pas entre crochets.

    5 - Quand tu auras corrigé
    var element = document.getElementByName["userEmail"].value;
    , la variable element contiendra donc une valeur (texte) et non pas un élément. Donc écrire plus loin element.keyup ou element.addEventListener est incorrect.

    6 -
    element.keyup=validateForm;
    : Ce n'est pas .keyup, mais.onkeyup

    7 -
    var myfuction=validateForm;
    ce n'est pas incorrect, mais bien inutile.

    8 -
    element.addEventListener('keyup',myfuction, false);
    , ça fait double emploi avec
    element.keyup=validateForm;


    À part ça, je ne vois rien, ce qui ne veut pas dire qu'il n'y a pas d'autres erreurs ...

    Au fait, tu sais que ton navigateur dispose d'une console javascript qui signale les erreurs ?
    1. Accolade en trop a la fin du if:
       
      function validateForm(){ 
      var atpos = x.indexOf("@"); 
      var dotpos = x.lastIndexOf("."); 
      if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
      document.getElementById('mail').innerHTML="Not a valid e-mail address"; 
      
      } 
      
      var element = document.getElementByName["userEmail"].value; 
      
      
      element.keyup=validateForm; 
      var myfuction=validateForm; 
      
      element.addEventListener('keyup',myfuction, false);  
      1. ms ça marche pas :/