【发布时间】:2016-07-20 17:30:46
【问题描述】:
我有下面的自动完成代码,当我输入一个或多个字母时效果很好。
$("body").on('focus', 'input.sub-category', function () {
var id = $(this).data('thiscatid');
var term = $(this).val();
$(this).autocomplete({
minLength: 0,
source: function( request, response ) {
$.post( base_url + 'ajax/getSubCats',
{ parent_id: id, term: term},
function( data ) {
response(data);
},
'json'
);
},
select:function(event,ui){
$(".sub-cat").val(ui.item.label);
return false;
},
change: function(event, ui) {
console.log(this.value);
if (ui.item == null) {
this.setCustomValidity("You must select a category");
}
}
});
});
我想用数据库中的所有匹配词填充下拉列表,只关注输入框。这意味着即使没有输入一个单词。当我只是专注时,该函数被调用,但在
function $(this).autocomplete({ 被执行。知道为什么在专注于输入字段时自动完成不起作用吗?
【问题讨论】:
-
一步一步来,而不是用焦点事件替换keyup代码,首先尝试检查焦点事件是否适合您。所以尝试一些 $("body").on('focus', 'input.sub-category', function () { alert('focused'); } 然后如果它有效,那么继续在里面编写更多代码
-
看起来问题在于您将输入绑定在焦点上。所以元素会有焦点,所以它不会被触发。也许如果你这样做
$(this).autocomplete({...your options...}.trigger("focus");
标签: javascript jquery autocomplete