jQuery验证插件,使用自定义方法单击按钮时验证错误
我使用jQuery验证插件 在我的例子中,虽然“onkeyup”、“onfocusout”方法处于启用状态,但在单击按钮时会进行验证。我为输入添加了自定义方法/规则 问题是: 当我单击按钮时,验证只在选择时发生,而不是在输入时发生。在这种情况下,将忽略新规则。但当我在输入中键入文本时,规则就起作用了。 如何解决这个问题jQuery验证插件,使用自定义方法单击按钮时验证错误,jquery,methods,click,jquery-validate,Jquery,Methods,Click,Jquery Validate,我使用jQuery验证插件 在我的例子中,虽然“onkeyup”、“onfocusout”方法处于启用状态,但在单击按钮时会进行验证。我为输入添加了自定义方法/规则 问题是: 当我单击按钮时,验证只在选择时发生,而不是在输入时发生。在这种情况下,将忽略新规则。但当我在输入中键入文本时,规则就起作用了。 如何解决这个问题 $(function() { // Added new method/rule $.validator.addMethod( "testm",
$(function() {
// Added new method/rule
$.validator.addMethod(
"testm",
function(value, element) {
return this.optional(element) || /^[0-9]+$/.test( value );
},
"Use a valid username."
);
$("#ftest").validate({
ignore: ".ignore, :hidden",
focusInvalid: true,
rules: {
i1:"required",
i2: {
testm: true
}
},
messages: {
i1: "error1",
}
});
// I need to check whether form is valid when I click the button
$("#btest").click(function() {
//alert('asd');
var valid = $("#ftest").valid();
if(valid)
{
alert('good');
}
else {
alert('bad');
}
});
})
为了使空输入无法通过验证,您需要从testm验证方法中删除这一行: 这个元素是可选的||
我的疏忽,我的错误。非常感谢。这正是我所需要的。注意:您应该完全删除行焦点。这已经是此选项的默认状态。正如文档中有时提到的,将某些选项设置为默认值可能会破坏插件。如果已声明,则此选项应仅设置为false。如果希望该选项为true,则不应声明该选项。另一个注意事项:您根本不需要$btest.click处理程序函数。这只是复制插件的默认行为。只需确保您的按钮是type=submit,其余按钮是自动的!请参阅:~您甚至不需要submitHandler或invalidHandler回调函数;我添加这些只是为了演示您的警报。