Как я могу настроить ненавязчивую проверку в ASP.NET MVC 3, чтобы соответствовать моему стилю? - PullRequest
32 голосов
/ 30 марта 2011

Проверка по умолчанию в 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
})

Но, похоже, это не работает в MVC3. В частности, errorPlacement никогда не вызывается, и я не знаю почему.Я вызову submitHandler, но никогда не errorPlacement.

Как я могу настроить валидацию так, чтобы она соответствовала любой структуре / стилю, которые мне требуются для стиля моего сайта?По умолчанию это хорошо, но это не всегда работает в каждой ситуации.

Ответы [ 4 ]

45 голосов
/ 31 марта 2011

В моем коде вместо использования $.validator.setDefaults я получаю доступ к средству проверки формы с помощью $("#form_selector").data('validator'), а затем изменяю настройки.

$(function () {

    var validator = $("#form_selector").data('validator');
    validator.settings.errorPlacement = function(error,element) {
        alert('errorPlacement');
    };

});

Посмотрите, работает ли он для вас.

39 голосов
/ 10 февраля 2012

У меня была та же проблема, но я понял, что плагин Unobtrusive на самом деле вызвал проблему, он переопределит любые опции, которые вы установили! Хитрость заключается в том, чтобы ваш код был написан / включен в следующем порядке:

  1. Плагин валидации
  2. Ваш код и опции
  3. ненавязчивый плагин

Любой другой порядок, и он не будет установлен правильно!

6 голосов
/ 08 июня 2016

Правильный способ сделать это:

Порядок сценариев:

  1. Плагин валидации
  2. ненавязчивый плагин
  3. Ваш код и опции

Скрипт нестандартного кода и параметров:

var settings = {
   //...
}; 

// override jQuery unobtrusive validator settings
$.validator.unobtrusive.options = settings;
0 голосов
/ 04 ноября 2014

Все, что я сделал для этого, просто дублировало мой стиль, чтобы соответствовать элементам, которые добавляет ненавязчивый валидатор.

@Html.ValidationMessageFor(x => x.EmailAddress, "", new { @class = "field-error" })

При возникновении ошибки проверки «ValidationMessageFor» добавляет класс «field-validation-error», как показано ниже.

<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;}

Я думал, что это простой способ исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...