【问题标题】:How should I check if record exists or not using jQuery Validate Plugin?我应该如何使用 jQuery Validate Plugin 检查记录是否存在?
【发布时间】:2012-03-27 15:35:27
【问题描述】:

我正在使用从以下 URL 找到的 jQuery Validate 插件

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

我只是想制定一个验证规则来检查记录是否存在于数据库中。我还制作了 ajax 脚本,例如使用 $.validator.addMethod 添加它,但它不起作用。有人可以建议如何做到这一点吗?

$.validator.addMethod("check_exists", function(value) {
$.ajax({
    type: "POST",
    url: "xyz.com/check_exists.php",
    data: $( "#frmEdit" ).serialize(),
        success: function(result){
                if(result=="exists")
                   return false;
                else
                   return true;
        },
});
}, 'This record is already exists');

【问题讨论】:

    标签: php jquery ajax validation plugins


    【解决方案1】:

    验证插件有一个内置的remote 选项,您提供一个 url,请求将从插件内发送到服务器。对于您正在做的事情,无需创建一个全新的方法

    http://docs.jquery.com/Plugins/Validation/Methods/remote#options

    【讨论】:

      【解决方案2】:

      您遇到的问题是 (1) AJAX 调用是异步的,因此该方法在 AJAX 调用完成之前返回;(2) 回调处理程序中的返回语句从 处理程序返回 不是验证功能。 解决此问题的最简单方法是使用remote 验证方法。 如果您想自己执行此操作,则需要同步 AJAX 调用 (async: false) 并将结果捕获到从函数返回的变量。

      $.validator.addMethod("check_exists", function(value) {
          var status;
          $.ajax({
              type: "POST",
              async: false,
              url: "xyz.com/check_exists.php",
              data: $( "#frmEdit" ).serialize(),
              success: function(result){
                  status = result=="exists";
              },
          });
          return status;
      }, 'This record is already exists');
      

      【讨论】:

      • 不,即使那样也行不通。我之前已经将 ajax async 设置为 false,但它仍然无法正常工作。它没有给出任何错误,但没有验证它。
      • @aslamdoctor 您是否也注意到我所做的其他更改?仅仅做到async: false 是不够的,您必须捕获结果。不过,您确实应该尝试使用remote 验证选项。在我添加链接之前,您可能已经阅读了我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2012-11-02
      • 2021-06-01
      • 2019-04-07
      相关资源
      最近更新 更多