javascript - jQuery 验证器附加方法未按预期工作

标签 javascript jquery ajax validation

我正在使用这个 jQuery 验证插件,http://jqueryvalidation.org/我正在创建一个添加方法,如下所示。

jQuery.validator.addMethod('exists', function(value, element) {
    $.ajax({
        data: {username: value},
        type: 'POST',
        url: 'action/check/',
        dataType: 'json',
        success: function(data) {
            if (data==true) {
                console.log(data);
                return true;
            }
            if (data==false) {
                console.log(data);
                return false;
            }
        }
    })
}, 'This username is already in use');

我的控制台正在从检查脚本中获取正确的数据,在我的控制台中我可以看到 true 和 false 等。但我不明白的是验证标志似乎会标记输入,无论输入是什么。

rules: {
        password_confirm: {
            equalTo: 'input[name=password]'
        },
        username: {
            exists: true
        }
    }

我的数据库中已经有用户名 chris,因此当我在用户名输入中输入 chris 时,我应该会得到一个重复用户的标志,但无论什么输入我得到验证标志。

我错过了什么

最佳答案

您的验证将不起作用,因为它是异步的(ajax 请求)。

您可以使用现有的 remote rule为此,请确保您的请求返回 true/false 作为其结果

  rules: {
    password_confirm: {
      equalTo: 'input[name=password]'
    },
    username: {
      remote: {
        url: 'action/check/',
        type: 'POST'
      }
    }
  }

关于javascript - jQuery 验证器附加方法未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076754/

相关文章:

javascript - ui-router 中 templateUrl 从一种状态到另一种状态的动态变化

javascript - Node Js 服务器接收 JSON 更新时刷新页面

javascript - 创建警报消息

ajax - MEAN-SEO 未按预期工作

ruby-on-rails - 使用 Ruby On Rails 在 AJAX 中进行星级评定

javascript - 当名称位于变量中时,如何在jquery中获取textarea元素

javascript - html5 音频在元素存在之前绑定(bind) timeupdate

javascript - 而不是 objectwidth = 1014;我想要 objectwidth = "Height of other div";可能的?

javascript - 使用 jquery 显示和隐藏 <option>

javascript - 减小图像文件的大小以加快上传速度?