验证表单后是否有任何回调

时间:2018-11-27 10:30:17

标签: jquery jquery-validate

我正在使用jQuery验证插件来验证表单,但是我有一个复杂的要求。

我必须启用/禁用按钮,该按钮的格式不是相同,而是在页面底部。表单经过验证后是否有任何回调?

1 个答案:

答案 0 :(得分:1)

引用用户评论:

  

“感谢@RoryMcCrossan的建议,但是当用户尝试提交表单时会触发这两个回调。我想要的是在验证通过后立即获得回调。”

是的,因为提交表单是触发整个表单验证的原因。 “ (表单)通过验证的那一刻”否则就无法捕获。

没有为此的回调。

您可以捕获何时通过focusoutkeyup事件验证单个字段,并且可以捕获何时通过提交按钮的click事件验证整个表单。但是,如果不使用“提交”按钮或以编程方式触发对整个表单的验证,就无法捕获整个表单何时有效。


但是,有一个函数计算错误总数,称为this.numberOfInvalids()。并且有一个回调,该回调在每次评估名为showErrors的任何字段时触发。您可以使用showErrors来构造可能的(不完善的)解决方法。计算多少错误消息,当错误消息多于零时,您就知道该表单无效。

showErrors: function(errorMap, errorList) {
    if (this.numberOfInvalids() != 0) {
        // invalid form
    } else {
        // no errors
    }
    this.defaultShowErrors(); // enable default error messages
}

但是,当错误为零时,该表格可能有效或无效; 此解决方案不能涵盖所有情况,如果用户尚未单击“提交”按钮,则该解决方案将失败。如果用户尚未单击“提交”按钮,则空白输入仍不能视为错误。

演示:jsfiddle.net/fL6n4oub/

也许您可以发挥创造力,并使用我在此处显示的一些内容找到解决方案。


您可以构建自己的自定义事件处理函数,该函数将在所有字段的focusoutkeyup事件上触发,但是唯一可用于测试整个表单有效性的方法也会导致表单的验证消息出现。