Как настроить ненавязчивую проверку в ASP.NET MVC 3 в соответствии с моим стилем?
Проверка по умолчанию в MVC 3 основана на jQuery Validation, которую я обычно могу настроить с помощью следующего:
$.validator.setDefaults({
submitHandler: function() { alert('submitHandler'); },
errorPlacement: function(error, element) {
// do something important here
alert('errorPlacement');
},
errorClass: "error",
errorElement: "input",
onkeyup: false,
onclick: false
})
Но, похоже, это не работает в MVC 3. В частности, errorPlacement никогда не кажется вызываемым, и я понятия не имею, почему. Я получу вызов submitHandler, но никогда не ошибаюсь.
Как я могу настроить валидацию для соответствия любой структуре/стилю, который мне нужен для моего стиля сайта? По умолчанию это замечательно, но он не всегда работает в любой ситуации.
Ответы
Ответ 1
В моем коде вместо использования $.validator.setDefaults
я обращаюсь к валидатору формы с помощью $("#form_selector").data('validator')
, а затем изменяю настройки.
$(function () {
var validator = $("#form_selector").data('validator');
validator.settings.errorPlacement = function(error,element) {
alert('errorPlacement');
};
});
Посмотрите, работает ли это для вас.
Ответ 2
У меня была одна и та же проблема, но я понял, что ненавязчивый плагин фактически вызвал проблему, он переопределит любые параметры, которые вы установили! Хитрость заключается в том, чтобы ваш код был написан/включен в следующем порядке:
- Подтверждающий плагин
- Пользовательский код и параметры
- Ненавязчивый плагин
Любой другой порядок, и это будет неправильно настроено!
Ответ 3
Правильный способ сделать это:
Script порядок:
- Подтверждающий плагин
- Ненавязчивый плагин
- Пользовательский код и параметры
Пользовательский код и параметры script:
var settings = {
//...
};
// override jQuery unobtrusive validator settings
$.validator.unobtrusive.options = settings;
Ответ 4
Все, что я сделал для этого, просто дублировал мой стиль для соответствия элементам, которые добавляет Unobtrusive validator.
@Html.ValidationMessageFor(x => x.EmailAddress, "", new { @class = "field-error" })
При возникновении ошибки проверки "ValidationMessageFor" добавляет класс "ошибка проверки поля", как показано ниже.
<span class="field-error field-validation-error" data-valmsg-for="EmailAddress" data-valmsg-replace="true"><span for="EmailAddress" generated="true" class="">Email address is Required.</span></span>
Итак, я дублировал свой стиль, например
.field-error.***field-validation-error*** {position:relative;color:#fff;background:#589BC9;}
Я думал, что это простой способ исправить это.