ユーザーがオートコンプリートするテキスト ボックスに入力できるようにしたいのですが、見つからない場合は、値 (この場合は projectId) ではなく、書き込まれた内容のテキストを送信する必要があります。
私の現在の考えは、変更イベントをキャプチャし (コメントアウトされたコードを見てください)、モデル バインディングを介して ASP.NET MVC コントローラーに渡される隠しフィールドを更新することです。
私のJavaScriptは次のようになります:
$(function () {
$('*[data-autocomplete-url]')
.each(function () {
$(this).autocomplete({
source: $(this).data("autocomplete-url"),
minLength: 2,
select: function (event, ui) {
$(this).next('input:hidden').val(ui.item.value);
$(this).val(ui.item.label);
return false;
},
focus: function (event, ui) {
$(this).next('input:hidden').val(ui.item.value);
$(this).val(ui.item.label);
return false;
},
change: function (event, ui) {
alert(ui.item.value);
//if (ui.item.value == null) {
// $(this).next('input:hidden').val(ui.item.label);
//}
}
});
});
});
私のHTMLは次のようになります。
<label for="ProjectID">Project</label>
<input type='text' data-autocomplete-url='/Projects/GetProjectsByUser' />\
<input id="ProjectID" name="ProjectID" type="hidden" value="" />
変更イベントが発生していません- 理由は何ですか?