Sniffer,
Чем больше я смотрю на это, тем больше я качаю головой (на себя).
При дальнейшем рассмотрении метод Дарина сработает, при условии, что вы добавите одну строку в скрипт его страницы:
<script type="text/javascript">
$.validator.unobtrusive.adapters.addBool("mustbetrue", "required");
$.validator.unobtrusive.parse();
</script>
Всякий раз, когда вы вносите изменения (например, добавляете новый адаптер), вы должны повторно анализировать ненавязчивые атрибуты проверки. Поскольку последним действием в jquery.validate.unobtrusive.js
является разбор атрибутов, и адаптер добавляется после разбора, повторный разбор решает эту проблему.
counsellorben
P.S. Это решает вашу проблему, но все еще не решает вопрос о том, как добавить другие пользовательские валидаторы, которые не используют встроенные методы из jquery.validate.js
без изменения jquery.validate.unobtrusive.js
.
P.P.S. Я нашел ответ для добавления пользовательских методов проверки. Чтобы добавить пользовательские методы проверки без изменения jquery.validate.unobtrusive.js
, вам необходимо «позаимствовать» часть его кода, чтобы добавить его в скрипт вашей страницы. Добавление пользовательского метода выглядит следующим образом:
<script type="text/javascript">
var $jQval = $.validator,
adapters,
data_validation = "unobtrusiveValidation";
function setValidationValues(options, ruleName, value) {
options.rules[ruleName] = value;
if (options.message) {
options.messages[ruleName] = options.message;
}
}
$jQval.addMethod("mustbetrue", function (value, element, param) {
// check if dependency is met
if (!this.depend(param, element))
return "dependency-mismatch";
return element.checked;
});
$.validator.unobtrusive.adapters.add("mustbetrue", function (options) {
setValidationValues(options, "mustbetrue", true);
});
$jQval.unobtrusive.parse();
</script>