我有两个或更多文本字段,我想对它们应用相同的属性,避免编写两次或更多次相同的代码
这不起作用:
$("#form").validate({
rules:
{
'name', 'surname':{
required: true,
minlength: 3,
maxlength: 50
}
}
});
有任何想法吗?
我有两个或更多文本字段,我想对它们应用相同的属性,避免编写两次或更多次相同的代码
这不起作用:
$("#form").validate({
rules:
{
'name', 'surname':{
required: true,
minlength: 3,
maxlength: 50
}
}
});
有任何想法吗?
将 CSS 类应用于所有字段
$(".cssClassName").rules("add", {
required: true,
minlength: 3,
maxlength: 50 ,
messages:
{required:"error1",minlength:"error2",maxlength:"error3"}});
将您的属性定义为变量,然后使用它:
var name_reqs = {
required: true,
minlength: 3,
maxlength: 50
};
$("#form").validate({
rules: {
'name': name_reqs,
'surname': name_reqs
}
});
像这样试试
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
}
}
});
显然有几种方法可以做到这一点,但如果你使用类规则:
$.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 验证通用指南的重构规则部分中进行了讨论。
取自我之前的回答:
就我的示例而言,这是基本的起始代码:
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/