我有一个自动完成用户界面,其中有一个预定义的用户列表作为源。当用户从列表中选择一个用户时,它的 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
忘记添加,.change 事件不起作用,因为每次值ui.item==null is true
和警报都会因此而出现异常。