我正在使用 jQuery Validation 来验证表单,而我想要做的是...
如果未选中复选框,则应通过以下方式进行验证:
weight: { required: true, max: 50 }
如果它被检查,这就是它应该被验证的方式。
weight: { required: true, max: 100 }
有任何想法吗?
我正在使用 jQuery Validation 来验证表单,而我想要做的是...
如果未选中复选框,则应通过以下方式进行验证:
weight: { required: true, max: 50 }
如果它被检查,这就是它应该被验证的方式。
weight: { required: true, max: 100 }
有任何想法吗?
每当单击复选框时,您将使用Validate 插件的内置rules('add')
方法来动态更改规则。
jQuery :
$(document).ready(function () {
// initialize the plugin
$('#myform').validate({
// other options,
rules: {
// other rules,
weight: {
required: true,
max: 50 // initial value on load
}
}
});
// change the rule on checkbox and update displayed message dynamically
$('#check').on('change', function () {
if ($(this).is(':checked')) {
$('#weight').rules('add', {
max: 100
});
} else {
$('#weight').rules('add', {
max: 50
});
};
$('#weight.error').each(function () {
$(this).valid();
});
});
});
HTML:
<form id="myform">
<input type="checkbox" id="check" />
<input type="text" id="weight" name="weight" />
<input type="submit" />
</form>
工作演示:http: //jsfiddle.net/3hGxS/
使用max方法和函数作为参数制定规则。这将在验证字段时进行评估,即在字段上调用 element() 时。
规则定义看起来像这样
rules: {
field1:
{
required: true,
max: function () { return $("#mycheckbox:checked").length ? 100 : 50; }
}
}
此外,在规则更改时重新验证目标字段,否则您可能会收到不再适用的错误消息
$('#mycheckbox').on('change', function () {
$('#field1.error').each(function () {
$(this).valid();
});
});
请注意,这只会在已验证的情况下重新验证该字段,检查是否存在默认的 errorClass 'error'。
像这样的html
<input name="mycheckbox" id="mycheckbox" type="checkbox" />
<input name="field1" id="field1">
<input type="submit" />
完整的 JavaScript 代码是这样的,在这里找到小提琴
$(function () {
$("form").validate({
rules: {
field1:
{
required: true,
max: function () {
return $("#mycheckbox:checked").length ? 100 : 50;
}
}
},
submitHandler: function () {
alert('form ok');
}
});
$('#mycheckbox').on('change', function () {
$('#field1.error').each(function () {
$(this).valid();
});
});
});