У меня есть jQuery autocomplete fild, который получает существующие данные из моего действия MVC. Я хочу убедиться, что данные, введенные в поле, НЕ СУЩЕСТВУЮТ в базе данных.xVal, чтобы ввести поле в состояние ошибки
У меня была эта работа с использованием .result и .change на автозаполнении, чтобы установить поле в класс = "ошибка ввода-проверки". Когда я добавил проверку клиента xVal, это все еще работает, но xVal, похоже, очищает класс css, поэтому теперь заголовок поля краснеет кратковременно, а затем возвращается к прозрачному фону.
Вместо того, чтобы пытаться изменить код xVal, я предпочел бы получить проверку клиента xVal для отображения поля в состоянии ошибки, как и для обычных ошибок проверки данных клиента.
Как мне это сделать? Какой код я могу использовать в событии autocomplete .result, чтобы заставить состояние ошибки в xVal?
Обновление: Я пробовал идею от Уайетта Барнетта, но, как вы можете видеть из моих комментариев, это не то, что я хочу. Вот код того, что у меня есть:
Поле разметки:
<p>
<%= Html.LocalisedLabel("ProjectId") %>
<%= Html.TextBox("project.ProjectId") %>
<%= Html.ValidationMessage("project.ProjectId", "*") %>
</p>
xVal разметки:
<%= Html.ClientSideValidation<ProjectBO>("project").UseValidationSummary("myValidationSummary") %>
<%= Html.ClientSideValidation<ProjectBO>("project").AddRule("ProjectId", new RemoteRule(Url.Action("ValidateProjectIdCreate", "LookUp", new { projectId = Model.ProjectId})))%>
Код JavaScript для разметки автозаполнения:
<script type="text/javascript">
$(document).ready(function() {
$('#project_ProjectId').autocomplete('<%= Url.Action("ProjectIdList", "LookUp") %>',
{
delay: 10,
minChars: 1,
matchCase: 0,
matchSubset: 1,
autoFill: false,
maxItemsToShow: 10,
cacheLength: 10
}
);
$('#project_ProjectId').result(function(item) {
if (item) {
//match
$('#project_ProjectId').attr("class", "input-validation-error");
}
else {
$('#project_ProjectId').removeAttr("class");
}
});
$('#project_ProjectId').change(function() {
$('#project_ProjectId').attr("class", "");
});
});
</script>
Этот сценарий дает мне возможность справиться, но что я могу положить в него?
Фактически я нахожусь на последней версии. Похоже, мне нужно проверить игру валидации ajax! Пойду и сделаю это – Redeemed1
Хорошо, я пробовал это, но пока он работает, это не то, что я хочу. Я использую автозаполнение в поле, которое довольно эффективно с точки зрения его кэширования и подсказок, которые оно дает пользователю. Кроме того, XVal Remote Validator возвращается на сервер для каждого введенного символа. Я хочу, чтобы у меня был отключен валидатор (а не удаленный вызов), который удаляется из моего кода. – Redeemed1
Я могу использовать событие autocomplete.result для этого, но не знаю, что положить в код в этот момент. Альтернативный путь для отображения состояния ошибки, но это вынудит блок для отправки – Redeemed1