Jqueryvalidation一个规则失败不应该跳转到另一个规则

我正在使用jqueryvalidation,我必须实现function,以便如果任何规则失败,表单不应提交。 工作完成validation工作正常。

问题是如果多个规则失败,它会在每个文本框中显示错误消息,失败将传播到所有规则。

我想实现一个function,如果一个规则失败,它应该只停止那个元素的错误消息。





规则:

 $( "#myform" ).validate({ rules: { fname:"required", lname:"required", fromDate:"required", endDate:"required" } }); 

在此处输入图像描述

这是我的问题的演示msg-“这个字段是必需的”应该出现一次,即第一个文本框。 错误不应传播到剩余的文本框。

如果任何机构了解我想要的内容,请回复。(这是我的演示代码。)

您可以使用自定义error handling程序showErrors ,您只在错误列表中设置第一个找到的错误:

 showErrors: function(errorMap, errorList) { if (errorList.length) { this.errorList = [errorList[0]]; } this.defaultShowErrors(); } 

错误列表需要是一个数组,这就是为什么第一个错误放在[] ,它定义了一个数组。

所以你总得到:

 $("#myform").validate({ rules: { fname: "required", lname: "required", fromDate: "required", endDate: "required" }, showErrors: function(errorMap, errorList) { if (errorList.length) { this.errorList = [errorList[0]]; } this.defaultShowErrors(); } }); 

的jsfiddle


现在,如果您希望内部validation检查在第一次错误时停止。 因此,不仅在视觉上不显示错误,而且实际上在一个字段是假的时候停止检查。 您可以覆盖内部检查functioncheckForm()

我将简单地检查元素是true还是false ,一旦false我知道至少有一个字段是假的。 所以我打破了检查循环:

 validator.checkForm = function() { this.prepareForm(); for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) { if (!this.check(elements[i])) return false; } return this.valid(); }; 

的jsfiddle

现在我想提醒你我不是这个插件的创建者,所以我不完全知道这是否有效。 我建议您编写自己的validation代码,以完全控制您正在做的事情。