ソースとして事前定義されたユーザーリストがあるオートコンプリートUIがあります。ユーザーがリストからユーザーを選択すると、そのIDが非表示フィールドに保存されます。ここまでは大丈夫です。ここで、ユーザーがオートコンプリートリストにないユーザー名を書き込んだ場合、非表示フィールドの値を0に変更して、他のタスクを実行する必要があります。しかし、私はこれを行うことができません...
.changeイベントを使用してみましたが、機能しません。これがコードです。
$.ajax({
type: "POST",
url: "CHService.asmx/GetClient",
dataType: "json",
data: "{}",
contentType: "application/json; charset=utf-8",
success: function (data) {
$('#txtName').autocomplete({
minLength: 0,
source: function (req, responseFn) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp("^" + re, "i");
var a = $.grep(data.d, function (item, index) {
return matcher.test(item.value);
});
responseFn(a);
}, //Searches user input with first letter of ...//data.d
select: function (event, ui) {
$('#txtName').val(ui.item.value);
$('#HFuser').val(ui.item.Name);
alert('Select' + ui.item.Name);
//return false;
},
change: function (event, ui) {
alert('Change' + ui.item.Name);
if (ui.item == null) {
$('#HFuser').val(0);
//return false;
}
}
});
つまり、基本的に必要なのは、UserId
ユーザーがオートコンプリートから値を選択したときに設定するかuserid=0
、ユーザーが新しい値を入力したときに設定することです。
UPDATE
ui.item==null is true
追加するのを忘れた場合、.changeイベントは機能しません。これは、の値とアラートが原因で例外を発生させるたびに発生するためです。