2009-12-23 134 views
1

我一直在尝试创建自己的自定义LiveValidation(LiveValidation.com)函数,该函数连接到数据库并检查用户名是否已存在。这是形式的相关部分:自定义实时验证功能

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> 

这是我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); 
} 

这里的usernamecheck.php的相关部分:

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

的功能似乎工作正常(如果我把alert('fail')以上Validate.fail(message);我使用使用的用户名时收到警报),但LiveValidation从不显示错误消息。任何人都知道我做错了什么?

感谢

回答

1

嗯......只是看着它真正的快,会不会是“消息”是不是在你的函数中定义?它在父函数中定义。