2009-12-23 7 views
1

J'ai essayé de créer ma propre fonction LiveValidation personnalisée (LiveValidation.com) qui se connecte à une base de données et vérifie si un nom d'utilisateur existe déjà. Ceci est la partie pertinente de la forme:Fonction de validation en direct personnalisée

Username: <input type="text" name="username" id="username" class="textinput"> 
    <script type="text/javascript"> 
     var username = new LiveValidation('username'); 
     username.add(Validate.Presence); 
     username.add(Validate.Length, { minimum: 3, maximum: 12 }); 
     username.add(Validate.Username); 
    </script> 

Ceci est ma fonction Validate.Username:

Validate.Username = function(value, paramsObj){ 

     var paramsObj = paramsObj || {}; 
     var message = paramsObj.failureMessage || "Sorry that username is taken!"; 

    var http = new XMLHttpRequest(); 
    var url = "usernamecheck.php"; 
    var params = "username="+value; 
    http.open("POST", url, true); 
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    http.setRequestHeader("Content-length", params.length); 
    http.setRequestHeader("Connection", "close"); 
    http.onreadystatechange = function() { 
     if(http.readyState == 4 && http.status == 200) { 
      if(http.responseText == 'yes') { 
       return true; 
      } else { 
       Validate.fail(message); 
       return false; 
      } 
     } 
    } 
    http.send(params); 
} 

Voici la partie pertinente de usernamecheck.php:

if(mysql_num_rows($query) != 0 && $query) { 
      echo "no"; 
     } else if ($query) { 
      echo "yes"; 
     } else { 
      echo "err"; 
     } 

La fonction semble pour fonctionner correctement (si je mets alert('fail') au-dessus de Validate.fail(message); Je reçois une alerte quand un nom d'utilisateur utilisé est utilisé), mais LiveValidation n'affiche jamais le message d'erreur. Quelqu'un sait ce que j'ai mal fait?

Merci

Répondre

1

Hmmm ... juste regarder vite fait, pourrait-il que « message » est pas défini dans votre fonction? Il est défini dans la fonction parente.

Questions connexes