Javascript 在不重新运行jquery验证的情况下检查表单是否有效
使用,是否有一种方法可以在不重新验证表单的情况下确定表单是否有效 根据上的这个问题,我正在收听Javascript 在不重新运行jquery验证的情况下检查表单是否有效,javascript,jquery,validation,jquery-validate,form-submit,Javascript,Jquery,Validation,Jquery Validate,Form Submit,使用,是否有一种方法可以在不重新验证表单的情况下确定表单是否有效 根据上的这个问题,我正在收听无效表单.validate事件,以在表单已验证且存在错误时向用户显示自定义错误 根据这个关于如何提交的问题,我将在表单提交后禁用“提交”按钮,但前提是表单有效,以便用户可以采取纠正措施并在表单清理后重新提交 问题现在是表单无效。validate激发两次 由于无效表单.validate事件在表单提交处理程序之前触发,因此我已经知道了错误的数量。该方法是否保留了某个地方的错误数,我可以根据该值进行检查,而不
无效表单.validate
事件,以在表单已验证且存在错误时向用户显示自定义错误
根据这个关于如何提交的问题,我将在表单提交后禁用“提交”按钮,但前提是表单有效,以便用户可以采取纠正措施并在表单清理后重新提交
问题现在是表单无效。validate
激发两次
由于无效表单.validate
事件在表单提交处理程序之前触发,因此我已经知道了错误的数量。该方法是否保留了某个地方的错误数,我可以根据该值进行检查,而不是重新验证表单
下面是堆栈片段中的一个示例。在填写必填字段之前点击submit,您将看到两条错误消息
$(“表单”).validate();
//显示关于无效提交的消息
$(“form”).on(“无效的form.validate”,函数(事件,验证器){
var errors=validator.numberOfInvalids();
如果(错误){
警报(“+错误+”字段有问题。”);
}
});
//防止双击表单提交
$('form')。提交(函数(){
if($(this).valid()){
$(':submit',this.attr('disabled','disabled');
}
});代码>
您可以使用以下命令,而不是将额外的侦听器附加到表单提交:
用于在表单有效时处理实际提交的回调
默认函数的行为如下所示:
submitHandler:函数(表单){
表单提交();
}
注意:表单
引用DOM元素,这样就不会再次触发验证
只需将一个submitHandler
传递到validate()
并添加代码以禁用按钮,如下所示:
$(“表单”)。验证({
submitHandler:函数(表单){
$(':submit',form).attr('disabled','disabled');
表单提交();
}
});
对submitHandler
回调函数中的表单执行任何操作都要小心,因为它很容易
以下是堆栈片段中的演示:
$(“表单”)。验证({
submitHandler:函数(表单){
$(':submit',form).attr('disabled','disabled');
表单提交();
}
});
//显示关于无效提交的消息
$(“form”).on(“无效的form.validate”,函数(事件,验证器){
var errors=validator.numberOfInvalids();
如果(错误){
警报(“+错误+”字段有问题。”);
}
});代码>
您可以使用以下代码检查表单是否有效,而无需触发UI
$('#formId').validate().checkForm()
您绝对不应该有另一个submit()
处理程序。但是,由于您在技术上不需要提交
,因此插件会处理这个问题。。。试试点击手柄。尽管如此,您也不应该需要单击
处理程序。。。这里不需要捕捉按钮。你的标题是个谬误。如果不“运行”验证,您就无法确定表单是否有效。@Sparky,您错误地引用了我的话。我的标题是了解表单是否有效,而无需“重新运行”验证。验证已在事件处理程序激发之前立即发生。我不需要在5毫秒后重新验证。这肯定是有可能的。这是一个例子。我在问题中提到这是一种可能性,但我觉得它不是很干净。是的,我误解了你标题的措辞。然而,原因很清楚,你显然已经自己解决了。