私は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 を使用しています。
任意の提案をいただければ幸いです。