2011-04-20 69 views
2

有没有人有使用jQuery验证和jQuery addmethod的用户名检查器的工作示例?JQuery用户名验证

事情是这样的:

$("#register_form").validate({ 
    onkeyup:false, 
    rules: { 
     username: { 
      required: true, 
      minlength: 3, 
      usernameCheck: true // remote check for duplicate username 
     }, 
}); 

jQuery.validator.addMethod("usernameCheck", function(username) { 
    var isSuccess = false; 
    $.ajax({ 
     url: "username_availability.php", 
     data: "username=" + username, 
     async: false, 
     type: "POST", 
     success: 
     function(msg) { 
      isSuccess = parseInt(msg); 
     } 
    }); 
    return isSuccess; 
},""); 

我一直在寻找所有谷歌的天,我注意到了一些像这样的转无人应答或尚未解决的具有高观看计数的线程。所以如果有人可以提供链接或解决方案,我相信很多JQuery noobs都会受益并感到高兴。 :)

嘿家伙,非常感谢您的所有 帮助。我设法找到我是 寻找虽然。

“牛奶榜样”?真?它存在吗?

- 是的我的儿子,它的存在和它的真棒: http://jquery.bassistance.de/validate/demo/milk/

+1

发布您的username_availability.php – austinbv 2011-04-20 16:04:24

+0

您现在有什么东西没有用吗?不使用验证插件,这取决于你想要这个功能的先进程度。你想要服务器端和客户端验证还是只需要服务器端? **专业提示:**仅使用客户端验证是一个坏主意。 – afuzzyllama 2011-04-20 16:04:33

+0

请注意,至少在将数据放入数据之前,您需要对用户名进行网址编码。 – Talljoe 2011-04-20 16:07:32

回答

1

我觉得你的问题是,成功的方法没有被返回的时候调用。你可以改变你的代码:

jQuery.validator.addMethod("usernameCheck", function(username) { 
    var result = $.ajax({ 
     url: "username_availability.php", 
     data: {username: username}, 
     async: false, 
     type: "POST" 
    }).responseText; 
    return result === '1'; 
},""); 
+0

这根本不起作用:/没有错误消息得到显示... – Ash 2011-04-20 18:13:58

+0

什么是从您的PHP返回的值?如果他们不是'1'和'0',那么你需要修改代码。也许张贴重要的位。这[小提琴](http://jsfiddle.net/xdp3k/)表明上面的代码可以工作,所以看看发生了什么。使用Fiddler,Firebug或IE的开发工具来跟踪请求。 – Talljoe 2011-04-20 18:56:14

0

使用remote类型,而不是让你自己的。

$("#register_form").validate({ 
    onkeyup:false, 
    rules: { 
     username: { 
      required: true, 
      minlength: 3, 
      remote:'username_availability.php' 
     }, 
}); 

它会的username=foo一个参数传递给您的username_availability.php页面。从该页面返回true或false。