3

我在 jquery 中使用验证插件。有一个很奇怪的事情是,当我以这种方式添加规则时

$(document).ready(function () {
$.validator.addMethod("endDateGreaterThan", function (value, element, params) {
            if (value != "" && $(params).val() != "") {
                var endDate = formatValidateDate(value);
                var startDate = formatValidateDate($(params).val());
                if (startDate == null || endDate == null)
                    return true;
                return new Date(endDate) >= new Date(startDate);
            }
            return true;
        }, "");

var validator = $("#form").validate({
            rules: {
                StartDate: "required",
                EndDate: {
                    required: true,
                    endDateGreaterThan: "#StartDate"
                },                  
                DiscountRate: {
                    required: true,
                    max: 100,
                    min: 1
                }
            },
            messages: {
                StartDate: {
                    required: "ErrorMessageStartDateRequired"
                },
                EndDate: {
                    required: "ErrorMessageEndDateRequired",
                    endDateGreaterThan: "ErrorMessageEndDateGreaterThanStartDate"
                },
                DiscountRate: {
                    required: "ErrorMessageDiscountRateRequired",
                    max: "Global.ErrorMessageDiscountRateRange",
                    min: "Global.ErrorMessageDiscountRateRange"
                }
            }
      });

没有添加任何规则。如果我调试js文件并进入jquery.validation.js文件中的validate方法,我发现传递给validate方法的选项是空的。

但是如果我动态添加规则,就像

$("#StartDate").rules("add", {
            required: true,
            messages: {
                required: "StartDate is required"
            }
        });

该规则将按照应有的方式添加。

我正在使用 ASP.net mvc。

任何建议表示赞赏。

4

2 回答 2

1

您的 html 可能是错误的。您在验证代码中引用的每个输入都必须有一个name属性。所以这是错误的:

<input type="text" id="StartDate" />

这是正确的:

<input type="text" name="StartDate" id="StartDate" />

请参阅文档

name 属性对于输入元素是“必需的”,没有它,验证插件将无法工作。通常 name 和 id 属性应该具有相同的值。

于 2013-06-05T16:13:47.250 回答
0

这是我的例子,它工作正常:

    $("#formControl").validate({
        rules: {
            ElementTypeUid: "required",
            InternalIdentifier: "required"
        },
        messages: {
            ElementTypeUid: "Some error message",
            InternalIdentifier: "Some error message"
        }
    });
于 2013-06-05T11:25:17.380 回答