我必须根据条件使用最小长度。(无论如何,我尝试了它也没有用)
“必需”规则没有问题。如果条件合适,我可以看到所需的消息,“必需”规则按预期工作,我也可以在控制台中看到“快乐的一天”。
但即使我在控制台中看到“min length 5”,它的表现就像表格一样。
我哪里错了?感谢。
if($('form#form_validation_reg_generate_user').valid({
rules: {
'userPassword':{
required:(function () {
if($('#userPassword').val().length >0 ) {
console.log('happy day');
return true;
}
else{
console.log('happy day false');
return false;
}
})(),
minlength:(function () {
if($('#userPassword').val().length >0 ) {
console.log('min length 5');
return 5;
}
else{
console.log('min length 0');
return 0;
}
})()
}
}
}))
答案 0 :(得分:0)
你的代码错了:
if ($('form#form_validation_reg_generate_user').valid({
// your rules
}));
您正在将.valid()
与.validate()
混在一起。您不应在.valid()
内声明任何内容,也不能将.validate()
置于条件内。
.validate()
is called once to initialize the plugin on the form。它不是按需触发验证的方法。初始化后,表单将根据插件中内置的各种事件回调自动进行验证,例如submit
,onkeyup
,onfocusout
和select,button&复选框click
。
要以编程方式执行验证测试,您可以调用the built-in .valid()
method,这与submit
事件非常相似,因为它会在整个表单上触发验证测试表单将显示任何错误。 .valid()
还会返回一个布尔值true
或false
,指示表单是否通过了验证测试。在您的示例/案例中,您似乎不需要使用此方法。
您的规则代码不合逻辑:
required: (function () {
if ($('#userPassword').val().length > 0) {
return true;
} else {
return false;
}
},
minlength: (function () {
if ($('#userPassword').val().length > 0) {
return 5;
} else {
return 0;
}
}
你的规则的逻辑完全没有意义,这些功能导致插件窒息。第一条规则是,只有当userPassword
包含某些内容时,required
才是userPassword
。这在逻辑上与“可选”相同。你的第二条规则是,minlength
的{{1}}只有在userPassword
包含某些内容时才会5
...再次说明没有任何意义。如果该字段是可选的,那么您只需声明userPassword
,默认情况下,它仅适用于字段包含的内容。 (您没有显示HTML,因此我只假设minlength
是同一字段的userPassword
和name
。)
请改为尝试:
id
DEMO:http://jsfiddle.net/7jLnu/
否则,如果您还想要字段$(document).ready(function () {
$('form#form_validation_reg_generate_user').validate({
rules: {
userPassword: {
minlength: 5
}
},
submitHandler: function (form) { // for demo
alert('valid form submission'); // for demo
return false; //form demo
}
});
});
:
required