我有一個jQuery autocomplete fild從我的MVC操作獲取現有數據。我想確保輸入到數據庫中的數據不存在。xVal強制一個字段進入錯誤狀態
我有這個工作在自動完成上使用.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>
這個腳本給我處理事件,但我可以放入什麼?
其實我是最新版本。看起來我需要檢查ajax驗證玩具!會去做, – Redeemed1 2009-09-29 14:02:42
好吧,我試過,但它的工作原理並不是我想要的。我在這個領域使用了自動完成功能,在緩存和提供給用戶的線索方面非常有效。此外,xVal遠程驗證器會在輸入的每個字符後返回到服務器。我想要的是驗證器(不是遠程調用)從我的代碼中被觸發,並從我的代碼中清除。 – Redeemed1 2009-09-29 16:05:25
我可以使用autocomplete.result事件來做到這一點,但不知道在那個時候要在代碼中放置什麼。 一個缺點是要顯示一個錯誤條件,但這會強制提交一個塊 – Redeemed1 2009-09-29 16:07:15