我有以下代码:
container.autocomplete({
minLength: 2,
source: function(request, response) {
$.ajax({
type : 'POST',
url: HOST + "/lib/gets/getjsonclients.php",
dataType: "json",
data: {
q: request.term
},
success: function(data) {
ajaxCache[cachedTerm] = data;
response($.map(data, function(item) {
return {
label: item.value,
value: item.value
}
}));
}
});
},
select: function(event, ui) {
alert(ui.item.value);
this.close
},
//change: function(event, ui) {
// alert($(this).val());
//},
open: function() {
},
close: function() {
}
});
当我输入一个新值(我在选择列表中已有的其他值)时,我想捕获回车键事件。
我尝试过使用.result事件,但是我遇到了错误:未捕获TypeError:对象#没有方法'结果'使用代码:
container.result(function(event, data, formatted) {
alert($(this).val());
});
更改:事件正常工作但只有在我将注意力放在自动完成上后才会触发,我需要在按下回车键时完成它
感谢您的回答。
答案 0 :(得分:2)
您应该将容器绑定到keypress并捕获回车键(未经测试但应该有效):
$(container).keypress(function(event) {
if(event.which == 13) {
$(this).autocomplete('search');
}
});
答案 1 :(得分:2)
我使用这个解决方案。 但是,如果有一种方法可以在一个事件被解雇时取消一个事件的效果,并再次激活该事件,请告诉我。
var oneEventFired = false;
container.autocomplete({
minLength: 2,
source: function(request, response) {
$.ajax({
type : 'POST',
url: HOST + "/lib/gets/getjsonclients.php",
dataType: "json",
data: {
q: request.term
},
success: function(data) {
ajaxCache[cachedTerm] = data;
response($.map(data, function(item) {
return {
label: item.value,
value: item.value
}
}));
}
});
},
select: function(event, ui) {
oneEventFired = true;
alert(ui.item.value);
this.close
},
open: function() {
},
close: function() {
}
})
.keypress(function(e) {
if (!oneEventFired) {
// activate when the enter key is hit
if (e.keyCode === 13)
{
alert("key" + $(this).val());
}
} else {
oneEventFired = false;
}
});
感谢您的帮助!