1

我有两个或更多文本字段,我想对它们应用相同的属性,避免编写两次或更多次相同的代码

这不起作用:

$("#form").validate({  
    rules:  
    {
    'name', 'surname':{  
        required: true,  
        minlength: 3,
        maxlength: 50   
        }
    }
});   

有任何想法吗?

4

5 回答 5

1

将 CSS 类应用于所有字段

$(".cssClassName").rules("add", {
        required: true,  
         minlength: 3,
          maxlength: 50 ,
        messages:
   {required:"error1",minlength:"error2",maxlength:"error3"}});
于 2013-02-27T11:28:38.987 回答
1

将您的属性定义为变量,然后使用它:

var name_reqs = {  
     required: true,  
    minlength: 3,
    maxlength: 50   
};

$("#form").validate({  
    rules: {
           'name': name_reqs,
        'surname': name_reqs
    }
});   
于 2013-02-27T11:28:52.917 回答
1

像这样试试

var ruleSet1 = {
        required: true,  
        minlength: 3,
        maxlength: 50
    };

$('#form').validate({
    rules: {
        field_1: ruleSet1,
        field_2: ruleSet1,
        field_3: ruleSet1
    }
});

或者像下面这样一个一个地做,

$("#form").validate({  
    rules:  
    {
    name: { required: true },
    surname:{  
        required: true,  
        minlength: 3,
        maxlength: 50   
        }
    }
});
于 2013-02-27T11:41:04.073 回答
1

显然有几种方法可以做到这一点,但如果你使用类规则:

$.validator.addClassRules("name", {
  required: true,  
  minlength: 3,
  maxlength: 50
});

然后你可以像这样设置你的规则

$("#form").validate({  
    rules:  
    {
     firstname : name, 
     surname : name
    }
});

或使用类名设置规则:

<input id="firstname" name="firstname" class="name">
<input id="surname" name="surnname" class="name">

此方法在 jQuery 验证通用指南的重构规则部分中进行了讨论。

于 2013-02-27T12:02:42.447 回答
1

取自我之前的回答


就我的示例而言,这是基本的起始代码:

HTML

<input type="text" name="field_1" />
<input type="text" name="field_2" />
<input type="text" name="field_3" />

jQuery :

$('#myForm').validate({
    rules: {
        field_1: {
            required: true,
            number: true
        },
        field_2: {
            required: true,
            number: true
        },
        field_3: {
            required: true,
            number: true
        }
    }
});

演示:http: //jsfiddle.net/rq5ra/


选项 1a) 您可以根据所需的通用规则将类分配给您的字段,然后将这些规则分配给类。您还可以分配自定义消息。

HTML:

<input type="text" name="field_1" class="num" />
<input type="text" name="field_2" class="num" />
<input type="text" name="field_3" class="num" />

.rules('add')方法 必须在调用调用.validate(),并且.each()必须用于以class.

jQuery:

$('#myForm').validate({
    // your other plugin options
});

$('.num').each(function() {
    $(this).rules('add', {
        required: true,
        number: true,
        messages: {
            required:  "your custom message",
            number:  "your custom message"
        }
    });
});

演示:http: //jsfiddle.net/rq5ra/1/

选项 1b) 与上面相同,但不使用 a class,而是匹配 name 属性的公共部分:

$('[name*="field"]').each(function() {
    $(this).rules('add', {
        required: true,
        number: true,
        messages: { // optional custom messages
            required:  "your custom message",
            number:  "your custom message"
        }
    });
});

演示:http: //jsfiddle.net/rq5ra/6/


选项 2a) 您可以提取规则组并将它们组合成公共变量。

var ruleSet1 = {
        required: true,
        number: true
    };

$('#myForm').validate({
    rules: {
        field_1: ruleSet1,
        field_2: ruleSet1,
        field_3: ruleSet1
    }
});

演示:http: //jsfiddle.net/rq5ra/4/


选项 2b)与上述 2a 相关,但取决于您的复杂程度,可以分离出某些组共有的规则,并用于.extend()以无限多种方式重新组合它们。

var ruleSet_default = {
        required: true,
        number: true
    };

var ruleSet1 = {
        max: 99
    };
$.extend(ruleSet1, ruleSet_default); // combines defaults into set 1

var ruleSet2 = {
        min: 3
    };
$.extend(ruleSet2, ruleSet_default); // combines defaults into set 2

var ruleSet3 = { };
$.extend(ruleSet3, ruleSet1, ruleSet2); // combines sets 2 & 1 into set 3.  Defaults are included since they were already combined into sets 1 & 2 previously.

$('#myForm').validate({
    rules: {
        field_1: ruleSet2,
        field_2: ruleSet_default,
        field_3: ruleSet1,
        field_4: ruleSet3
    }
});

最终结果:

  • field_1将是一个不小于 3 的必需数量。
  • field_2将只是一个必需的数字。
  • field_3将是不大于 99 的必需数字。
  • field_4将是 3 到 99 之间的必填数字。

演示:http: //jsfiddle.net/rq5ra/5/

于 2013-02-27T15:37:48.640 回答