基于条件的jQuery验证maxlength参数
如何根据条件使用jQuery验证更改文本框的maxlength 代码 如何根据if-else条件更改maxlength?如图所示,我认为可以通过maxlength方法更改基于条件的jQuery验证maxlength参数,jquery,jquery-validate,Jquery,Jquery Validate,如何根据条件使用jQuery验证更改文本框的maxlength 代码 如何根据if-else条件更改maxlength?如图所示,我认为可以通过maxlength方法更改maxlength: $( "#yourTextBox" ).validate({ rules: { field: { required: true, maxlength: function(){ return condition ? valueIfTrue, valueIfF
maxlength
:
$( "#yourTextBox" ).validate({
rules: {
field: {
required: true,
maxlength: function(){
return condition ? valueIfTrue, valueIfFalse;
}
}
}
});
编辑:正如@Sparky指出的,配置无法重新初始化。因此,
maxlength
应该通过回调函数进行更改。三元表达式是否就是您想要的
SSN: { required: true, minlength: 9, maxlength: ((condition)?true:false) }
例如:
SSN: { required: true, minlength: 9, maxlength: ((my_var=="short")?13:17) }
如果满足条件,则打印13,否则打印17
编辑:更正最大长度,使其大于最小长度 您可以使用
规则
选项中的函数,根据特定的动态条件返回所需的参数
在下面的演示中,单击复选框将maxlength
设置为12
,否则为15
$('#myform').validate({
rules: {
SSN: {
required: true,
minlength: 9,
maxlength: function(element) {
return $('#foo').is(':checked') ? [12] : [15];
}
}
}
});
演示:这就像他已经拥有的代码一样。他想根据条件动态更改它。@Sparky,您好,我的回答只是告诉他可以使用此代码动态更改maxlength
的值。我看不出你的答案和我的答案有什么区别。你刚才给出了一个条件的例子。因为我们可以有数千个条件,或者这个代码可以在事件处理程序中调用,所以我没有给出它。胡说八道。您不能多次调用.validate()
来初始化插件,也不能在文本框中调用它来更改规则。如果再次调用.validate()
,插件将完全忽略它。请参阅:您必须从函数()中返回参数,并且maxlength
的参数不能是布尔值。你的答案完全错了:你在哪里看到布尔值?它只是一个三元表达式,在条件为真与否的情况下,真与假表示最大长度数的位置,如例9或5Umtrue
和false
称为“布尔”值。这是胡说八道,因为你永远不能在maxlength
方法上声明true
或false
。无论如何,使用第二行代码,答案仍然是错误的:您的maxlength
也不能小于minlength
。只是一个非常糟糕的答案,代码有问题,使用有问题。不,不是,无论条件如何,maxlength
始终为15
!我不知道你在想什么,因为你发布的所有内容都被破坏了。@RomainDerie可能是重复的,是的,除了我的版本是有效的,还有。
$('#myform').validate({
rules: {
SSN: {
required: true,
minlength: 9,
maxlength: function(element) {
return $('#foo').is(':checked') ? [12] : [15];
}
}
}
});