【问题标题】:jQuery Validator fails to submit with custom method using ajaxjQuery Validator 无法使用 ajax 提交自定义方法
【发布时间】:2011-07-06 06:37:05
【问题描述】:

所以我有一个自定义验证器根据我的可接受邮政编码数据库检查输入的邮政编码。

我的自定义方法如下:

jQuery.validator.addMethod("validZip", function(value, element){
    var _id = $(element).attr("id");
    $.post(
        '/xpress/wp-admin/admin-ajax.php',
        {action:"test_checkZip", zip:value},
        function(response){
            if (result == 0){
                return false;
            } else {
                return true;
            }
        }
    );
}, '*');

我认为,问题在于,由于 ajax 不阻塞请求的延迟,因此无法及时为验证器返回真/假结果以使其被识别。

只要结果为真,它就无法隐藏错误消息并且表单无法提交。

我已经能够通过显式隐藏错误元素来隐藏 return true 代码块中的错误消息。错误消息确实隐藏了,然而,表单仍然返回 false,因为自定义方法无法返回 true。

我做错了吗?我该如何解决这个问题?

非常感谢。

【问题讨论】:

    标签: jquery ajax validation


    【解决方案1】:

    您可以使用$.ajax 同步recuest

    jQuery.validator.addMethod("validZip", function(value, element){
        var _id = $(element).attr("id");
        var return_val = null;
        $.ajax({
            url: '/xpress/wp-admin/admin-ajax.php',
            type: 'post',
            data: {action:"test_checkZip", zip:value},
            async: false,  //This does the trick
            success: function(response){
                if (result == 0){
                    return_val = false;
                } else {
                    return_val = true;
                }
            }
        });
        return return_val;
    }, '*');
    

    希望这会有所帮助。干杯

    【讨论】:

      【解决方案2】:

      如果您改用$.ajax(),则可以指定同步而不是异步进行 POST。

      $.ajax({
          url: '/xpress/wp-admin/admin-ajax.php',
          type: 'POST',
          data: {action:"test_checkZip", zip:value},
          async: false,
          success: function(response){
              // Process response..
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多