【问题标题】:jQuery autocomplete manual inputjQuery自动完成手动输入
【发布时间】:2011-12-22 15:00:58
【问题描述】:

这里是场景 1:用户开始输入一些单词,自动完成引擎显示建议列表(在 ajax 请求之后)。用户单击该列表中的某些项目。选择事件已被触发。一切都很好。

场景 2:用户开始输入一些单词,自动完成引擎显示建议列表(在 ajax 请求之后)。但是这次用户没有点击项目并转到另一个字段。选择事件尚未触发。但是用户输入的值是正确的。如何手动触发选择事件? 谢谢。

【问题讨论】:

    标签: jquery jquery-ui jquery-autocomplete


    【解决方案1】:
    $(document).on('blur', "#inputField", function () {
    
      $(this).trigger('autocompleteselect');
    
    });
    

    从 Karthik 的建议,一个解释:为输入框的模糊事件绑定一个处理程序,以便当用户离开该字段时,它运行。然后,此函数调用触发“autocompleteselect”事件,该事件(理论上)也应绑定到此输入框。由于 nKognito 说这不起作用......好吧,我想我需要查看更多代码才能进一步排除故障。

    编辑

    好的,根据您的 jsfiddle,我已经尝试过了,但未能让自动完成选择的触发器起作用。所以现在,我建议改为:

    var list = [{id:1,Name:"John"},{id:2,Name:"Johna"}];
    $('#a').autocomplete({
                source: function(request, response) {
                    response($.map(list, function(item) {
                                return {id : item.id, label : item.Name};
                            }));
                },
                minLength: 2,
                select: function () { selectHanlder(this) }
            }).blur(function () { selectHandler(this) });
    
    
     function selectHandler(this) {
                    // do what you will
                }
    

    这只会在 blur 事件上调用与 autocompleteselect 相同的处理程序。效果应该是一样的。

    【讨论】:

    • @Jake:试着给你的答案做个解释,让大家明白你想说什么。
    • 我发现了这个问题(见答案#2):stackoverflow.com/questions/7633727/…,但是触发点击事件后自动完成的选择事件没有触发的问题。
    • 您可以展示这个问题的功能演示吗?也许是小提琴或实时链接?
    • jsfiddle.net/VxZyB 如您所见,当用户从菜单中选择某个项目时,会触发 select 事件。但是当用户输入有效名称并且该字段失去焦点时,自动完成选择事件不会触发。
    • 还是不行。模糊处理程序有另一个签名,因此您不能调用与选择事件中相同的回调函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2011-12-23
    相关资源
    最近更新 更多