Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不重新运行jquery验证的情况下检查表单是否有效_Javascript_Jquery_Validation_Jquery Validate_Form Submit - Fatal编程技术网

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毫秒后重新验证。这肯定是有可能的。这是一个例子。我在问题中提到这是一种可能性,但我觉得它不是很干净。是的,我误解了你标题的措辞。然而,原因很清楚,你显然已经自己解决了。