我的设置是我有一个名为claimaint_rep的字段,现在当该值为是时我想要多个字段。现在我正在使用jquery验证。我的代码目前是:
$('#aspnetForm').validate({
errorPlacement: function (error, element) { },
rules:
{
claimsol:
{
required: function (element) {
return $("#ctl00_ContentPlaceHolder1_claimant_rep").val() == "Yes";
},
minlength: 2
}
},
highlight: function (element) {
$(element).closest('.control-group').removeClass('success').addClass('error');
},
success: function (element) {
$(element).closest('.control-group').removeClass('error').addClass('success');
}
});
示例HTML:
<div class="control-group">
<label class="control-label" for="inputEmail">Reference Number</label>
<div class="controls">
<asp:TextBox ID="solicitor_reference" CssClass="span3 claimsol" runat="server"></asp:TextBox>
</div>
</div>
字段命名是由于它是一个ASP Webform(ugh),现在看来,claimol规则只适用于一个名为claimol的字段?我想将该规则应用于多个字段,理想情况下无需在规则部分中设置每个字段。我在这里缺少什么?
答案 0 :(得分:1)
引用OP:
我想将该规则应用于多个字段,理想情况下没有 在规则部分设置每个。
我真的不知道你最终想要实现什么,但只有几种方法可以批量应用规则。
1)rules('add')
method用于动态地将规则添加到jQuery目标选择器。如果选择器以多个字段为目标,则必须将此方法包含在.each()
。
$('[name*="field"]').each(function() {
$(this).rules('add', {
required: true,
number: true,
messages: { // optional custom messages
required: "your custom message",
number: "your custom message"
}
});
});
实现这一目标的各种方法是无限的。
请参阅:https://stackoverflow.com/a/15116062/594235
2)addClassRules()
method用于创建代表您的复合规则的class
名称。 (但是,覆盖默认错误消息并不像第1项那样简单。)
$.validator.addClassRules("myclass", {
required: true,
minlength: 2
});
您还必须将class
名称添加到需要使用该规则的每个输入。
<input type="text" class="myclass" name="field" />
DEMO:http://jsfiddle.net/62uua/
3)或者您可以使用addMethod()
method基于您的依赖函数创建一个全新的规则。
$.validator.addMethod("myrule", function(value, element) {
// your function
// return false triggers the error
// return true passes validation
}, "Custom message");
有关所有可用方法和用法,请参阅文档:http://docs.jquery.com/Plugins/Validation
修改强>:
如果您尝试禁止显示错误消息,请不要像在此处那样传递空回调函数,
errorPlacement: function (error, element) { },
改为传递return false
,
errorPlacement: function (error, element) {
return false; // suppress default error message placement
},