MVCアクションから既存のデータを取得するjQueryオートコンプリートファイルがあります。フィールドに入力されたデータがデータベースにまだ存在していないことを確認したいと思います。
オートコンプリートで.resultと.changeを使用してこの作業を行い、フィールドをclass="input-validation-error"に設定しました。xValクライアント検証を追加した場合、これは引き続き機能しますが、xValはcssクラスをクリアしているように見えるため、フィールドエントリが一時的に赤くなり、その後クリアバックグラウンドに戻ります。
xValコードを変更しようとするのではなく、xValクライアント検証を取得して、通常のクライアントデータ検証エラーの場合と同様にフィールドをエラー状態で表示したいと思います。
どうすればいいですか?オートコンプリートの.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>
このスクリプトは処理するイベントを提供しますが、何を入れることができますか?