嗨,谢谢你抽出时间回答我的问题。
我需要在验证引擎中创建验证规则,因为它不允许值为0.(意味着必须选择至少一个元素)。我有一个select元素,默认(请选择一个项目)的值为0,因为它不是必需的。但是一旦选中了复选框,我就需要它。我无法添加类'validate [required]',因为0是有效值。所以我的问题是如何制作一个不允许将值0传递给控制器的自定义规则。
再次感谢
答案 0 :(得分:2)
我认为自定义验证不需要。您可以在选中复选框时在jquery的帮助下添加必需属性,并在取消选中时删除此属性(并在文档准备好首次加载时检查它)。 例如:
$('#myCheckBox').click(function () {
if ($(this).is(':checked')) {
$('#myDropDown').removeAttr('required');
}
else {
$('#myDropDown').attr('required', true);
}
});
但在这种情况下,您的<option>
值应为空。 <option value>Please select an item</option>
(因为我知道它是下拉列表的通常行为)。之后,jquery验证插件将自动验证所需的属性。
修改强>
好吧,如果你肯定应该使用自定义验证,你可以这样做:
1)添加验证方法(例如,准备好文件)
$.validator.addMethod("checkIfNotZero", function (value, element) {
return this.optional(element) || ($('#checkbox').is(':checked')&&value!=0);
}, "Please, select value");
$.validator.addClassRules("mySpecificClass", { checkIfNotZero: true });
2)用class="mySpecificClass"
3)并检查$('#myDropDown').valid()
是否需要(或者在onSubmit事件处理程序中调用$(form).validate()
)。
我认为就是这样。希望它会有所帮助。