如果你看一下这个表格: http://docs.jquery.com/Plugins/Validation#Example
您会注意到一个问题:在任何文本框中输入单个击键后,它会立即触发字段验证。例如,如果您开始在电子邮件字段中输入内容,则在单次击键后,您将收到验证错误。
这似乎与示例表单下面的描述性文本直接矛盾,后者说:
在字段被标记为无效之前,验证是懒惰的:在第一次提交表单之前,用户可以通过字段标记而不会收到恼人的消息 - 在他有机会实际进入之前,他不会被窃听正确的值
一旦字段被标记为无效,就会热切地验证:一旦用户输入了必要的值,就会删除错误消息
如果用户在未标记的字段中输入内容,并且标签/点击远离它(模糊字段),则会进行验证 - 显然用户有意输入内容但未能输入正确的值< / p>
这描述了期望的行为 - 在用户提交表单之前没有“恼人的错误消息”或b)将数据输入字段并使字段模糊。但是在演示中实际发生的是在第一次击键后触发验证,而不是在场模糊之后触发验证。因此,用户被“烦人的错误消息”轰炸,这使他分散了他正在做的事情。我们想要快乐的用户,而不是烦恼的用户: - )
如何获得文本中描述的行为,而不是演示中的行为?
谢谢!
-Josh
答案 0 :(得分:0)
默认行为是进行实时验证。要覆盖它,只需添加一个参数
onkeyup:像这样的假
$(document).ready(function(){
$("#commentForm").validate({
"onkeyup":false
});
});
这是demo
答案 1 :(得分:0)
在我的情况下,只要您“输入”输入字段,我就不必做任何事情来阻止消息。
我正在使用表单验证jQuery插件。
以下是我的代码示例,它仅在您在输入中编写内容时进行验证。如果你写了一些东西,然后在那种情况下擦除它就会出现“必需的消息”字段:
Js摘录
form2.validate({
rules: {
name: {
required: true,
minlength: 2,
maxlength: 50,
},
lastname: {
required: true,
minlength: 2,
maxlength: 50,
},
}
},
highlight: function (element) { // hightlight error inputs
$(element)
.closest('.help-inline').removeClass('ok'); // display OK icon
$(element)
.closest('.control-group').removeClass('success').addClass('error'); // set error class to the control group
},
unhighlight: function (element) { // revert the change done by hightlight
$(element)
.closest('.control-group').removeClass('error'); // set error class to the control group
},
});
然后,如果您想在输入中“登陆”时立即显示消息,您可以在焦点上进行验证:like in this jsfiddle example
<强>段强>
onfocusout: function (element) {
$(element).valid();
},