jquery验证添加规则

时间:2013-06-05 03:45:45

标签: jquery asp.net-mvc jquery-validate

我在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。

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

这是对的:

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

请参阅documentation

  

对于输入元素,name属性是'''''''   没有它,验证插件不起作用。通常是姓名和身份证   属性应具有相同的值。

答案 1 :(得分:0)

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

    $("#formControl").validate({
        rules: {
            ElementTypeUid: "required",
            InternalIdentifier: "required"
        },
        messages: {
            ElementTypeUid: "Some error message",
            InternalIdentifier: "Some error message"
        }
    });