按键时,Jquery验证不检查是否为真。它在从元素聚焦后触发。按下完成后,按键完成验证检查。为什么是这样?这里有我的代码
$('input[name=roleName]').keypress(function () {
$('form').validate({
rules: {
roleName: {
required: true,
isRoleUsed: true
}
},
messages: {
roleName: {
required: "You have to enter role name"
}
}
});
});
答案 0 :(得分:1)
.validate()
方法永远不会进入按键事件处理程序。它只是插件的初始化方法,只能进入DOM ready事件处理程序。
然后在初始化插件后自动捕获keyup
事件。
$(document).ready(function() {
$('form').validate({
rules: {
roleName: {
required: true,
isRoleUsed: true
}
},
messages: {
roleName: {
required: "You have to enter role name"
}
}
});
});
DEMO:http://jsfiddle.net/9hf0pr6a/1/
注意,默认情况下,验证是" Lazy",这意味着在评估required
验证规则之前,您将尝试填写表单。直到第一次单击提交按钮后才会捕获keyup
个事件。
否则,您可以将keyup
行为更改为" Eager"通过覆盖onkeyup
选项进行验证。
$(document).ready(function() {
$('form').validate({
onkeyup: function(element) {
this.element(element);
},
rules: {
roleName: {
required: true,
isRoleUsed: true
}
},
messages: {
roleName: {
required: "You have to enter role name"
}
}
});
});