我有一个 jQuery 自动完成字段,它从我的 MVC 操作中获取现有数据。我想确保输入到字段中的数据不存在于数据库中。
我在自动完成上使用 .result 和 .change 将字段设置为 class =“input-validation-error”。当我添加 xVal 客户端验证时,这仍然有效,但 xVal 似乎清除了 css 类,所以现在字段条目短暂变为红色,然后返回到清晰的背景。
与其尝试更改 xVal 代码,不如让 xVal 客户端验证以错误状态显示字段,就像正常客户端数据验证错误一样。
我该怎么做?我可以在自动完成 .result 事件中使用什么代码来强制 xVal 中的错误状态?
更新: 我尝试了 Wyatt Barnett 的想法,但从我的评论中可以看出,这不是我想要的。这是我所拥有的代码:
字段标记:
<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>
该脚本为我提供了要处理的事件,但我可以在其中放入什么?