2013-09-24 18 views
3

У меня есть небольшая проблема. Я использую MVC 4 и «JQuery Validation Plugin 1.11.1».jQuery.validator.addClassRules() не отображает сообщение об ошибке. Зачем?

Я вставив в сценарий раздела пользовательской проверки, что-то вроде этого:

jQuery.validator.addMethod("nameExist", function (value, element, param) { 
      var notError = true; 
      if (value == 'Hello') 
      { 
       notError = false; 
      } 
      return notError; 
     }, 'The name exists'); 

И создать класс с новой проверкой

jQuery.validator.addClassRules("nameExistErrClass", { nameExist: true }); 

Затем в HTML разделе это сделать:

@using (Html.BeginForm(MVC.Home.CopyData(), FormMethod.Post, new { id = "copyForm" })) 
{ 

... 

@Html.TextBox("newName", string.Empty, new { type = "text", @class = "nameExistErrClass"}) 
<span class="field-validation-valid" data-valmsg-for="newName" data-valmsg-replace="true"></span> 

... 

} 

После отправки этой формы с текстом «Hello» выглядит так, как работает валидация, но сообщение об ошибке не

Предупреждение: Нет сообщений определены для NEWNAME

Как отобразить сообщение 'Имя существует'?

P.s. Если я добавив атрибут

требуется = «требуется»

к элементу «NEWNAME», все нормально, и сообщение берется из сообщений по умолчанию.

+1

Отметьте этот ответ: http://stackoverflow.com/questions/3247305/how-to-add-messages-to-a-class-with-addclassrules –

+1

Кажется, что вы делаете это правильно, рабочий пример используется ваш код: http://jsfiddle.net/ryleyb/xC6nb/ – Ryley

+0

Пожалуйста, покажите _vendered_ HTML вашей формы. – Sparky

ответ

-1

Теперь я понял! Извините за всю путаницу. Часть JavaScript работает хорошо. Проблема в том, что такой перегрузки Html.BeginForm(String, FormMethod, Object) не существует. Скажите, пожалуйста, что вы пытаетесь сделать, чтобы я мог дать вам правильный совет. Я даже не понимаю часть MVC.Home.CopyData(). Не могли бы вы рассказать мне об этом тоже. Я думаю, вы мигните, чтобы выбрать для него неправильный подход.

Я надеюсь, что это поможет вам!

+0

** Цитата **: _ "Вы должны передать объект в метод' addClassRules' вместо двух аргументов. "_ ~ Нет, вы ошибаетесь. [Вы ** можете ** также передавать два аргумента как '(string, object)', используя 'jQuery.validator.addClassRules (имя, правила)' согласно документации] (http://jqueryvalidation.org/jQuery.validator. addClassRules /). Также см. Работу Ryley jsFiddle: http://jsfiddle.net/ryleyb/xC6nb/ – Sparky

+0

Вы правы, но пример из Ryley не работает. –

+0

Демо-версия Ryley отлично работает, когда вы понимаете, что поле не «обязательно», и любое значение _except_ «Привет» проходит проверку. Ваша версия метода addClassRules работает так же, как и у Ryley: http://jsfiddle.net/xC6nb/2/ – Sparky

Смежные вопросы