Chr*_*ter 48 jquery-ui autocomplete
如何以编程方式触发jQuery UI的AutoComplete更改事件处理程序?
挂钩
$("#CompanyList").autocomplete({
source: context.companies,
change: handleCompanyChanged
});
Run Code Online (Sandbox Code Playgroud)
杂项尝试迄今为止
$("#CompanyList").change();
$("#CompanyList").trigger("change");
$("#CompanyList").triggerHandler("change");
Run Code Online (Sandbox Code Playgroud)
基于其他答案它应该工作:
当我通过浏览器手动与AutoComplete输入交互时,change事件按预期触发; 但是我想在某些情况下以编程方式触发更改事件.
我错过了什么?
Joh*_*rer 41
干得好.它有点乱,但它有效.
$(function () {
var companyList = $("#CompanyList").autocomplete({
change: function() {
alert('changed');
}
});
companyList.autocomplete('option','change').call(companyList);
});
Run Code Online (Sandbox Code Playgroud)
lor*_*lad 21
这也会奏效
$("#CompanyList").autocomplete({
source : yourSource,
change : yourChangeHandler
})
// deprecated
//$("#CompanyList").data("autocomplete")._trigger("change")
// use this now
$("#CompanyList").data("ui-autocomplete")._trigger("change")
Run Code Online (Sandbox Code Playgroud)
小智 18
最好使用select事件.Wil说,改变事件必然会被keydown所束缚.因此,如果你想听取选择的改变,请选择那样.
$("#yourcomponent").autocomplete({
select: function(event, ui) {
console.log(ui);
}
});
Run Code Online (Sandbox Code Playgroud)
Wil*_*ver 13
它们绑定到自动完成源中的keydown,因此触发keydown会使其更新.
$("#CompanyList").trigger('keydown');
Run Code Online (Sandbox Code Playgroud)
它们不绑定到'change'事件,因为只有在表单字段失去焦点时才会在DOM级别触发.自动完成需要比"失去焦点"更快地响应,因此它必须绑定到键事件.
这样做:
companyList.autocomplete('option','change').call(companyList);
Run Code Online (Sandbox Code Playgroud)
如果用户重新输入之前的确切选项,将导致错误.
小智 10
对于其他人来说,这是一个相对干净的解决方案:
// run when eventlistener is triggered
$("#CompanyList").on( "autocompletechange", function(event,ui) {
// post value to console for validation
console.log($(this).val());
});
Run Code Online (Sandbox Code Playgroud)
Per api.jqueryui.com/autocomplete/,这将函数绑定到eventlistener.当用户从自动完成列表中选择一个值以及他们手动键入值时,它都会被触发.当场失去焦点时触发器触发.
| 归档时间: |
|
| 查看次数: |
125190 次 |
| 最近记录: |