基于条件的jQuery验证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

如何根据条件使用jQuery验证更改文本框的maxlength

代码

如何根据if-else条件更改maxlength?

如图所示,我认为可以通过maxlength方法更改
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或5Um
true
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];
            }
        }
    }
});