Привязка проверки JQuery вручную после запроса Ajax - PullRequest
5 голосов
/ 07 июня 2011

Я запрашиваю представление ASP.net MVC в оперативном окне, и оно содержит поля формы, размеченные атрибутами, которые будут использоваться плагином ненавязчивых валидаторов JQuery.

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

Таким образом, как я могусообщить платформе валидации, что в ней есть новые поля формы для исправления?

Приветствия, Ян.

Ответы [ 5 ]

17 голосов
/ 05 августа 2013
var $form = $("form");

$form.unbind();
$form.data("validator", null);

$.validator.unobtrusive.parse(document);
// Re add validation with changes
$form.validate($form.data("unobtrusiveValidation").options);
6 голосов
/ 07 июня 2011

Вы можете взглянуть на следующую запись в блоге .А вот еще один .

1 голос
/ 06 февраля 2014

Почему-то мне пришлось объединить ответы bjan и dfortun ...

Итак, я поставил это на мой взгляд:

@{
  this.ViewContext.FormContext = new FormContext();
}

И выполните это после завершения вызова ajax:

var form = $("#EnrollmentForm");
form.unbind();
form.data("validator", null);
$.validator.unobtrusive.parse(document);
form.validate(form.data("unobtrusiveValidation").options);
1 голос
/ 13 апреля 2012

Еще один вариант, скорее трюк, который у меня сработал. Просто добавьте следующую строку в начало частичного представления, которое возвращается вызовом ajax

this.ViewContext.FormContext = new FormContext(); 

Ссылка

0 голосов
/ 14 февраля 2013

У меня была похожая проблема. У меня была форма, которая использовала запросы Ajax для повторного отображения части формы с различными полями формы. Я использовал ненавязчивую проверку, вручную выполняя ее на стороне клиента, используя

@Html.TextBoxFor

для моих текстовых полей. По какой-то причине проверка работает при попытке отправки с недопустимыми полями (т. Е. Текстовые поля выделяются красным, а соответствующие сообщения об ошибках отображаются с содержимым, которое я поместил в

data_val_required
Атрибут

, например.

Однако после того, как я нажму кнопку, которая отправляет Ajax-запрос на изменение формы с другими полями, а затем отправляет снова, на недопустимых полях отображается только красный контур, но сообщения об ошибках не отображаются.

Уловка Бьяна сработала для меня, но я до сих пор не понимаю, что стало причиной проблемы. Весь HTML-код, необходимый для выполнения проверки на стороне клиента, был там. Я просто не могу понять, почему значения атрибута сообщения об ошибке не будут отображаться.

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

...