我有一個自動完成的用戶界面,其中有一個預先定義的用戶列表作爲源。 當用戶從列表中選擇一個用戶時,它的ID被保存在一個隱藏字段中。到此爲止,這很好。現在,如果用戶寫入的用戶名不在自動完成列表中,那麼我需要將隱藏字段的值更改爲0並執行其他任務。但我無法做到這一點...在Jquery自動完成Ui中搜索文本
我試過使用.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
忘了補充,該.change事件不會工作,因爲,每一次的ui.item==null is true
值和警報了例外,由於它。
直到現在http://stackoverflow.com/questions/3299839/jquery-ui-autocomplete-with-hybrid-text-id-search是我接近的唯一的東西(見第一個答案)。但那是另一種方式。 – Ruchan
是那裏的一個有效的財產? ui.item.Name? autosuggest默認只包含ui.item.label和ui.item.value。你沒有在控制檯中發現錯誤? – chrisvillanueva
沒有沒有錯誤的。 .Name是在我的json列表中定義的,所以我使用它。 無論如何,我想出了我的問題。查看下面的答案,如果有任何建議或錯誤 – Ruchan