如何在jQueryUI中手动触发自动完成"select"事件?

Jon*_*mon 33 jquery jquery-ui jquery-ui-autocomplete

我正在使用jQueryUI自动完成,并且我有一个映射到select事件的函数,例如:

$("#someId").autocomplete({
    source: someData,
    select: function (event, ui) { ... },
    focus: function (event, ui) { ... }
});
Run Code Online (Sandbox Code Playgroud)

我有一个特例:用户专注于自动完成下拉列表中的项目(但未选中它),我需要从另一个函数手动触发select事件.这可能吗?如果是这样,怎么样?

tem*_*uri 40

这对我有用:

$(this).data('ui-autocomplete')._trigger('select', 'autocompleteselect', {item:{value:$(this).val()}});
Run Code Online (Sandbox Code Playgroud)

  • 错误:无法获取未定义或空引用的属性"_trigger" (4认同)
  • 这比选择的答案要好,因为它传递了重要的"ui"数据 (3认同)
  • 优秀!这是实际触发事件的唯一解决方案,而不仅仅是模仿用户与UI的交互. (2认同)

Nic*_*tti 9

你可以这样做:

$("#someId").trigger("autocompleteselect");
Run Code Online (Sandbox Code Playgroud)

  • 这是因为只有在事件与`$().on('autocompleteselect')`绑定时才会有效,而不是在使用`$()绑定构造时.autocomplete({select:function(){}})`.使用`$().data('autocomplete')._ trigger()`然后 (7认同)

Run*_*sen 6

你可以像jQuery团队在单元测试中那样做 - 看看这个答案


小智 5

只需调用以下函数

setAutocomplete("#txt_User_Name","rohit");

function setAutocomplete(autocompleteId,valuetoset)
    {
        $(autocompleteId).val(valuetoset);
        $(autocompleteId).autocomplete("search", valuetoset);
        var list = $(autocompleteId).autocomplete("widget");
        $(list[0].children[0]).click();
    }
Run Code Online (Sandbox Code Playgroud)