我在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。
任何建议都表示赞赏。
答案 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"
}
});