2

您好,感谢您花时间回答我的问题。

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

再次感谢

4

1 回答 1

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()有必要(或例如调用$(form).validate()onSubmit 事件处理程序)。

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

于 2012-09-28T10:28:16.620 回答