在更改事件中访问自动完成输入

时间:2013-10-21 07:32:00

标签: jquery autocomplete closures

我们已经定制了jQuery的自动完成功能,在change事件处理程序中,我们需要访问输入来调用我们添加的函数。 ui参数是所选项目,但如果用户输入了一些随机文本,则不会选择任何项目,ui.item为空。所以我不能在ui.item上使用遍历DOM基础。

简而言之,我们(实际上是这个项目的人)做的是修改jquery ui文件:

$.widget( "ui.autocomplete", {
    // original code here
    ourCustomMethod: function() {}
});

现在我们构建了一个组合框,我们在其中(简化):

var self = this;
var input = this.input = $("<input>")
    .autocomplete({
        change: function(event, ui) {
            if (!ui.item) {
                // I want to call the ourCustomMethod here
                // I can't use the parents of ui.item because it's null
            }
        }
    });

那么如何才能访问ourCustomMethod?我正在猜测self.input,但不能完全指责它。

1 个答案:

答案 0 :(得分:0)

很抱歉自己这么快回答,但是在继续环顾四周之后我找到了答案。我从来不知道如何恰当地说出这一点。

我在这里找到答案:JQuery - Widget Public Methods

就我而言,我可以这样做:

self.input.autocomplete('ourCustomMethod');

这显然是在DOM元素上调用widget方法的方法,我不知道。