我在jQuery中使用驗證插件。有一個很奇怪的是,當我以這種方式添加規則時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。
任何建議表示感謝。
顯示'form'的呈現HTML。在第一種情況下,當在'.validate()'中定義'rules'時,必須使用'name'屬性作爲選擇器。在你的第二種情況下,使用'rules('add')'方法,你通過'id'屬性來定位你的字段。看到不同?如果我們可以看到表單的HTML,你的'規則'選擇器是否匹配字段'name'屬性? – Sparky