自定义验证规则 - jQuery验证引擎

时间:2012-09-28 09:07:50

标签: jquery select jquery-validation-engine

嗨,谢谢你抽出时间回答我的问题。

我需要在验证引擎中创建验证规则,因为它不允许值为0.(意味着必须选择至少一个元素)。我有一个select元素,默认(请选择一个项目)的值为0,因为它不是必需的。但是一旦选中了复选框,我就需要它。我无法添加类'validate [required]',因为0是有效值。所以我的问题是如何制作一个不允许将值0传递给控制器​​的自定义规则。

再次感谢

1 个答案:

答案 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())。

我认为就是这样。希望它会有所帮助。