我正在使用自动完成类别。如果我直接在输入字段中键入,它将很好地工作。但是,如果我使用javascript为输入字段设置值,则不会触发自动完成功能。
小部件部分与jqueryui site相同。 这是sample jsfiddle
//sample HTML
<input id="search">
<button id="button">Click</button>
//sample JS
$(document).on("keyup", '#search', function(event){
$.ajax{
...
autocomplete_data = ajax_provided_data;
$("#search").catcomplete({
source: function(request, response){
console.log("source");
response(autocomplete_data);
},
select: function(event, ui){
//do stuff
}
});
}
});
$(document).on("click", "#button", function(event){
$("#search").val("abcd");
$("#search").keyup();
});
当我单击#button
时,输入的值被更改,keyup()
被触发,并且ajax运行。但是,catcomplete()
不会触发。从未在source
函数中使用console.log。
如果我手动在输入字段中键入内容,一切正常,它将在控制台中显示“源”。
我也尝试过this来触发空格键。还是没有运气。
它将起作用,但是,如果我单击按钮,然后在输入字段中手动键入空格。
如何解决此问题?
答案 0 :(得分:0)
我看了jquery-ui.js
自动完成部分。为了触发完整的自动完成功能,需要发生keydown
或input
事件。
通过修改this,将keyup
更改为keydown
,它会起作用。
function ShowAutoComplete($field, searchVal) {
var e = $.Event('keydown');
e.which = 32;
$field.val(searchVal).focus().trigger(e);
}