Прежде всего, я порекомендую вам библиотеку http://momentjs.com/ для работы с датами и ее проверками.
В моем случае проверка пользовательских правил не выполнялась, потому что .NETMVC автоматически настраивает проверку формы.Поэтому мне пришлось удалить эту конфигурацию перед применением моей (чтобы иметь возможность использовать пользовательские методы пользовательского интерфейса Kendo, ...), и тогда все работало нормально.
Вот пример кода Javascript:
var errorPlaceholder = $("<div></div>");
function initializeFormValidator() {
jQuery.validator.addMethod("year", function(value, element, options) {
return (new Date().getFullYear()) >= parseInt(value, 10);
});
jQuery.validator.addMethod("greater20", function(value, element, options) {
return (($(element).data("kendoDropDownList").value() == "1") && (parseFloat($(options).val()) >= 20.0));
});
$.data($("#myFormId")[ 0 ], "validator", null); //Remove previous configuration
$("#myFormId").validate({
focusInvalid: true,
ignore: "",
onkeyup: false,
onfocusout: false,
errorElement: "div",
errorPlacement: function(error, element) {
error.appendTo(errorPlaceholder);
}
});
}
function validateForm() {
var ok = $("#myFormId").valid();
if(!ok) {
Utils.ShowAlert("Invalid form", errorPlaceholder.html(), BootstrapDialog.TYPE_WARNING);
}
return ok;
}
И образец разметки для одного входа;)
<input data-msg-year="The construction year must be lower than the current year" data-rule-year="true" id="CARACTERISTICAS_GENERALES_antigue_cons" max="2100" min="1700" name="CARACTERISTICAS_GENERALES.antigue_cons" step="1" type="text" value="1700" data-role="numerictextbox" class="k-input error"/>