MVC3 - запуск ненавязчивого JavaScript в JQuery UI с автоматическим выпадением - PullRequest
2 голосов
/ 31 августа 2011

combox Я использую ненавязчивую проверку в приложении MVC3. У меня есть выпадающий список с валидатором [Обязательный]. Это моя модель (упрощенно):

[Required(ErrorMessage = "Please select From Employee.")]
public string CurrentEmpId { get; set; }       

public List<SelectListItem> CurrentEmp { get; set; }

А это мой взгляд (упрощенно):

@Html.LabelFor(m => m.CurrentAdvisers)
@Html.DropDownListFor(m => m.CurrentEmpId, new SelectList(Model.CurrentEmp, "Value", "Text", Model.CurrentEmpId), "Please Select")
@Html.ValidationMessageFor(m => m.CurrentEmpId)

Теперь все это работает, пока я не сделаю выпадающий список в поле JQuery UI jqueryui.com / demos / autocomplete / # combobox (см. Последний аргумент).

@Html.DropDownListFor(m => m.CurrentEmpId, new SelectList(Model.CurrentEmp, "Value", "Text", Model.CurrentEmpId), "Please Select", new { @class = "selAutoComplete" })

Проверка срабатывает ОК, когда я нажимаю кнопку отправки, и ничего не было выбрано. Есть одна раздражающая вещь, которая не работает, хотя. Когда выдается ошибка, если я затем иду и исправляю ошибку, выбирая что-то в раскрывающемся списке и выкладывая, ошибка не исчезает. Это произошло, когда это было обычное поле выбора.

Вероятно, это связано с тем, что <select> теперь скрыт и заменен <input> на JQuery, но я не могу понять, как вызвать правильные js для удаления сообщения об ошибке.

Любая помощь будет принята с благодарностью!

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

После некоторых дальнейших исследований я обнаружил, что следующее решение прекрасно работает:

Как использовать jQuery для удаленной проверки поля, которое зависит от другого поля в форме?

$("select.selAutoComplete").change(function() {
    $(this).removeData("previousValue"); //clear cache when changing group
    $("form").data('validator').element('select.selAutoComplete');
});

@ Уильям Ниу - Я попробовал ваше решение, и я не мог понять, почему это не сработало.Спасибо, что нашли время ответить.

Надеюсь, это поможет другим.

0 голосов
/ 01 сентября 2011

Из вашего описания кажется, что проверка элемента управления select не сработала, когда вы открыли вкладку из выпадающего списка jQ-UI. Одна из вещей, которую вы можете попробовать, - принудительно вызвать событие blur или change в элементе управления select сразу после того, как вы ушли с вкладки, например ::

$('#CurrentEmpId').next('input').blur(function(e) {
    $('#CurrentEmpId').change();
    //$('#CurrentEmpId').blur();    // try this line if the above does not work
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...