Jquery tokeninput и ненавязчивая проверка в приложении MVC 4

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

@Html.LabelFor(x => x.UserModel.CurrentCity)
@Html.TextBoxFor(x => x.UserModel.CurrentCity, new { @data_bind = "value: UserModel.CurrentCity ", @class = "city", @data_val = "true", @data_val_required="City is required" })
@Html.ValidationMessageFor(x => x.UserModel.CurrentCity)

Я хочу автозаполнение для этого поля и использую плагин ввода токена jquery для этого, например:

$(".city").tokenInput('@Url.Action("AutocompleteCity", "Settings")',{ minChars: 2, tokenLimit: 1, hintText: "Type in a city" });
$(".city").tokenInput("add", {name: viewModel.UserModel.CurrentCity()});

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

Я также попытался изменить помощники MVC на простой html:

<input data-val="true" data-val-required="City is required" type="text" class="city" data-bind = "value: UserModel.CurrentCity, attr: { name: 'UserModel.CurrentCity', id: 'UserModel.CurrentCity'}" />
<span class="field-validation-valid" data-valmsg-for="UserModel.CurrentCity" data-valmsg-replace="true"></span>

Этот подход предотвращает отправку формы, но класс ошибки проверки не внедряется в диапазон, и сообщение об ошибке не отображается.

Какие-либо предложения?


person Jenny Pettersson    schedule 29.12.2012    source источник
comment
Работает ли проверка на стороне клиента для других элементов формы на той же странице? Есть ли ошибки javascript до или после взаимодействия с полем? Работает ли проверка, если вы удалите tokenInput?   -  person Colin Young    schedule 12.01.2013
comment
Да, у меня много полей в этой форме, и все они работают и проверяются правильно, кроме тех, где я использую tokeninput. Нет ошибок javascript.   -  person Jenny Pettersson    schedule 12.01.2013
comment
Чтобы подтвердить, если вы удалите ввод токена из этого поля, это поле также будет правильно проверено, показывая сообщение об ошибке? Какой браузер вы используете и как вы подтверждаете, что сообщение не вставлено в диапазон?   -  person Colin Young    schedule 14.01.2013
comment
Да это верно. Я использую инструменты разработчика Chrome.   -  person Jenny Pettersson    schedule 16.01.2013


Ответы (1)


Исходный элемент ввода, который вы создали, скрыт. Скорее всего, вам потребуется включить проверку скрытых элементов: jquery.validate v. 1.9 игнорирует некоторые скрытые входные данные или https://stackoverflow.com/a/13295938/173225.

person Colin Young    schedule 16.01.2013
comment
Ура!! Добавление $.validator.setDefaults({ ignore: }); решил проблему. Большое спасибо за то, что указали мне правильное направление :) - person Jenny Pettersson; 17.01.2013