【问题标题】:jQuery Validate - Success event?jQuery Validate - 成功事件?
【发布时间】:2012-04-05 10:44:05
【问题描述】:

我在我的网站上使用jQuery Validate 插件,然后通过ajax 提交表单。当 整个 表单有效时,我可以使用一个事件吗?

【问题讨论】:

    标签: jquery validation jquery-validate


    【解决方案1】:

    没有针对此的事件。只需使用简单的 if 语句检查状态即可。

    if($("form").valid()) {
     //go ahead
    }
    

    但是,如果您正在尝试使用解决方案来捕获有效事件,您可以执行类似的操作

    $("form").submit(function() {
        if($(this).valid()) {
           //go ahead
        } else {
           //do some error handling
        }
    });
    

    【讨论】:

    • 出于兴趣:在您的第二个代码 sn-p 中,如果页面上有多个
      元素,您最好使用 $(this) 而不是 $("form") ?
    • @MattHamilton,你是绝对正确的。我是根据表格来回答的。我更新了我的答案:)
    • 酷。我正在学习这些东西,所以很高兴知道其中一些正在深入。:)
    • 当您将表单提交到 .net 服务器应用程序时,此方法会导致调用两次验证,因为表单提交本身有一个由框架应用的附加处理程序,该框架也执行此操作。正确的方法是采取上面@Ryley 的方法。
    【解决方案2】:

    jQuery Validate 希望你处理这个问题的方式是指定一个submitHandler aka “当表单提交并且它有效时运行这个函数”。您可以在该函数中通过 AJAX 提交表单的内容。

    $('form').validate({
        //your normal options
        submitHandler: function(){
            $.ajax(...);
        }
    });
    

    【讨论】:

      【解决方案3】:

      只要打电话

      $("form").valid(); // returns true if valid
      

      而不是

      $("form").validate(); //returns $.validate
      

      【讨论】:

        【解决方案4】:

        你可以像这样实现类似的东西:

        var validator = $("#signin_form").validate({
                rules: {
                    Phone: {
                        required: true,
                        phone: true
                    },
                    VerifyCode: {
                        required: true,
                        verifyCode: true
                    }
                },
                messages: {},
                success: function (label, element) {
                    if (validator.numberOfInvalids() == 0) {
                        console.log(true);
                    }
                }
            })
        

        【讨论】:

          【解决方案5】:

          this

          valid( ) 检查选中的表单是否有效或是否所有选中的元素都有效。

          编辑

          返回:Boolean

          【讨论】:

          • 这太模糊了,没有建设性的帮助,一行“看到这个”的答案也违背了 SO 社区的精神,请改进这个答案。
          猜你喜欢
          • 1970-01-01
          • 2011-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          相关资源
          最近更新 更多