Проверка jQuery - добавление обязательных полей динамически через ajax в MVC2 - PullRequest
1 голос
/ 30 июля 2010

Я пытаюсь использовать проверку jQuery на форме в MVC2.Я использую: MicrosoftMvcJQueryValidation.js из проекта фьючерсов.

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

Пользователь может щелкнуть ссылку, которая загружает в 3 дополнительных обязательных поля Ajax, представленный классом ContactViewModel.

У меня это работает, поэтому инфраструктура MVC отправляет обратно правильные window.mvcClientValidationMetadata данные в браузер и __ MVC_EnableClientValidation и __ MVC_CreateValidationOptions для вновь добавленных полей вызываются функции.

Однако при нажатии кнопки подтверждения проверяются только первые 3 поля.

Используются следующие модели:

public class RepresentativeViewModel
{
    [HiddenInput(DisplayValue=false)]
    public int Id { get; set; }

    [Required(ErrorMessage = "Name is required")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Telephone is required")]
    public string Telephone { get; set; }

    [Required(ErrorMessage = "Website is required")]
    public string Website { get; set; }

    public IEnumerable<ContactViewModel> ContactList { get; set; }
}

public class ContactViewModel
{
    [HiddenInput(DisplayValue = false)]
    public int Id { get; set; }

    public int RepresentativeId { get; set; }
    public RepresentativeViewModel Representative { get; set; }

    [Required(ErrorMessage="First Name is required")]
    public string FirstName { get; set; }

    [Required(ErrorMessage = "Last Name is required")]
    public string LastName { get; set; }

    [Required(ErrorMessage = "Job is required")]
    public string JobTitle { get; set; }
}

После небольшой отладки я нашел это в jquery.validate:

// check if a validator for this form was already created
var validator = $.data(this[0], 'validator');
if ( validator ) {
    return validator;
}

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

    return validator;

, тогда будут проверяться только новые поля.

Как получить как исходные, так и новые поля для проверки, когда пользователь нажимает на кнопку отправить

1 Ответ

0 голосов
/ 29 августа 2014

Попробуйте позвонить

      $(document).ajaxComplete(function (event, request, settings) {
        $.validator.unobtrusive.parse(document);
    });
...