JQuery验证自定义方法的麻烦

时间:2013-12-20 13:15:00

标签: jquery ajax jquery-validate

我正在使用JQuery验证插件,并添加了一种新方法来检查数据库中名称的可用性。 PHP脚本运行良好,并正确返回1或0。但该方法始终返回“名称不可用”。

jQuery.validator.addMethod("loginAvailability", function(value, element) {

    $.post("CheckLogin.php", { login: value },
        function(result){
        console.log(result);
        console.log(value);
            return result;
        }
    )},"Name is not available");

有控制台日志(数据库中的“abc”用户):

0
abc
1
qwe

当我们在xammp本地服务器上测试时,一切正常,但在真实服务器上不起作用。

1 个答案:

答案 0 :(得分:2)

正如人们评论的那样 - 您无法返回$.post的值,因为您的loginAvailability函数会在$.post之前返回。幸运的是,jQuery Validate提供了一个remote方法来处理这个问题!

$('form').validate({
    rules: {
        username: {
            required:true,
            remote: {
               url: "CheckLogin.php",
               type:'post',
               data: {
                   login: function() {
                      return $( "#username" ).val();
               }
            }
        }
    }
});