2

MVC3 アプリで目立たない検証を使用しています。[必須] バリデータを含むドロップダウン リストがあります。これは私のモデルです(簡略化):

[Required(ErrorMessage = "Please select From Employee.")]
public string CurrentEmpId { get; set; }       

public List<SelectListItem> CurrentEmp { get; set; }

そして、これは私のビューです(簡略化):

@Html.LabelFor(m => m.CurrentAdvisers)
@Html.DropDownListFor(m => m.CurrentEmpId, new SelectList(Model.CurrentEmp, "Value", "Text", Model.CurrentEmpId), "Please Select")
@Html.ValidationMessageFor(m => m.CurrentEmpId)

ドロップダウン リストを JQuery UI コンボ ボックス jqueryui.com/demos/autocomplete/#comboboxにするまで、これはすべてうまく機能しています(最後の引数を参照)。

@Html.DropDownListFor(m => m.CurrentEmpId, new SelectList(Model.CurrentEmp, "Value", "Text", Model.CurrentEmpId), "Please Select", new { @class = "selAutoComplete" })

送信ボタンを押しても何も選択されていない場合、検証は正常に起動します。ただし、機能しない厄介なことが1つあります。エラーが発生したときに、ドロップダウンで何かを選択してタブアウトしてエラーを修正しても、エラーは消えません。これは、通常のセレクト ボックスの場合に発生しました。

おそらく、<select>が非表示になり、by JQuery に置き換えられたことが関係していると思われます<input>が、正しい js を起動してエラー メッセージを削除する方法がわかりません。

どんな助けでもありがたく受け取られます!

前もって感謝します

4

2 に答える 2

0

さらに調査した結果、次の解決策がうまく機能することがわかりました。

jQuery を使用して、フォーム内の別のフィールドに依存するフィールドをリモートで検証する方法は?

$("select.selAutoComplete").change(function() {
    $(this).removeData("previousValue"); //clear cache when changing group
    $("form").data('validator').element('select.selAutoComplete');
});

@William Niu - 私はあなたの解決策を試しましたが、頭の中で、これがうまくいかなかった理由がわかりませんでした。時間を割いて回答していただきありがとうございます。

これが他の人に役立つことを願っています。

于 2011-09-05T14:29:15.177 に答える
0

あなたの説明から、jQ-UI コンボボックスからタブで移動したときに、選択コントロールの検証がトリガーされなかったようです。試してみることができることの 1 つは、コンボボックスから離れた直後に選択コントロールにblurorイベントを強制することです。change

$('#CurrentEmpId').next('input').blur(function(e) {
    $('#CurrentEmpId').change();
    //$('#CurrentEmpId').blur();    // try this line if the above does not work
});
于 2011-09-01T08:06:38.803 に答える