jqueryvalidation插件无法处理字段的模糊

我需要jquery validate插件来validation字段模糊的所有字段。 目前仅在提交表格时进行validation。 这是我的HTML HTML

 

jQuery的

 $(document).ready(function() { form = $('#submitForm'); if (form.length) { form.validate({ ignoreTitle: false, onfocusout: false, onkeyup: false, onclick: false, submitHandler: function() { form[0].submit(); }, messages: { firstName:{ required: "First Name is required.", minlength: "First Name entered is invalid.", aplhawithaposonly:"First Name entered is invalid." } } }); }); 

aplhawithaposonly写在另一个js文件中

 jQuery.validator.addMethod("aplhawithaposonly", function(value, element) { return this.optional(element) || /^[a-zA-Z'\s]+$/i.test(value); }, "Please enter Alphabetic or apostrophe ' only."); 

现在,只有在提交表单时才会validation页面。 但我希望validation发生在该领域的模糊。 我试着继续onfocusout:是的。 但这不是解决方案。 有人可以帮我解决这个问题吗? 这是正在使用jsery.validate.min.js的js文件。 我应该使用任何其他版本的jquery吗? 请指导我..

引用OP:

“…… 我希望validation能够在场上模糊 ……”

如果你想在焦点上进行validation,那么为什么你的选项中有onfocusout: false设置?

焦点上的validation已经是默认值 ,因此无需设置任何选项来实现此行为

“……我试着继续onfocusout:true 。但那不是解决。有人可以帮助我如何实现这个目标吗?”

根据文档 , “布尔值true不是有效值”

onfocusout在
类型:布尔值或函数()
在模糊上validation元素(复选框/单选按钮除外)。 如果未输入任何内容,则跳过所有规则,除非该字段已标记为无效。 设置为函数以自行决定何时运行validation。 布尔值true不是有效值。

换句话说,由于onfocusoutvalidation已经是默认行为,你根本不应该声明这个选项……只是把它留下来。 只有当你想要禁用它或onfocusout: function() {...时才使用onfocusout:false onfocusout: function() {...当你想要覆盖它时。 同样,永远不要使用onfocusout:true如果您只是想要默认行为, onfocusout:true

相同的原则适用于onsubmitonkeyuponclick选项。


对此……

 if (form.length) { form.validate({ .... 

在将.validate()方法附加到表单之前,绝对不需要测试表单的存在。 对于任何jQuery选择器,如果它与现有元素不匹配,则不会发生任何事情。

简单地在DOM ready事件处理程序中放入.validate()

 $(document).ready(function() { $('#yourform').validate({ // <- initializes the plugin // options, rules, and callbacks }); }); 

对此......

  

由于您已经将minlength声明为HTML5validation属性,因此不需要在class内部使用minlength 。 此外,将minlength放在class是行不通的,因为无法传递参数。 只能在class声明可以使用布尔值true声明的规则。


对此......

 submitHandler: function() { form[0].submit(); }, 

这正是插件的默认行为......它是多余的代码,所以把它取出来。 如果需要覆盖默认的form操作(例如,使用ajax() ,则仅使用submitHandler回调。


对此......

 ignoreTitle: false, 

根据文档 ,这已经是默认行为。 最好把它拿出来。