1

我的组合框完成过滤器后,我需要触发一个事件

我已经扩展了小部件,并试图在通话结束时放弃 .done。

    search: function(word) {
        word = typeof word === "string" ? word : this.text();
        var that = this,
            length = word.length,
            options = that.options,
            ignoreCase = options.ignoreCase,
            filter = options.filter,
            field = options.dataTextField;

        clearTimeout(that._typing);

        if (length >= options.minLength) {
            that._state = STATE_FILTER;
            if (filter === "none") {
                that._filter(word);
            } else {
                that._open = true;
                that._filterSource({
                    value: ignoreCase ? word.toLowerCase() : word,
                    field: field,
                    operator: filter,
                    ignoreCase: ignoreCase
                }); // .done here does not work :(
            }
        }
    },

我需要知道何时返回一个值,以便一旦我知道输入与值服务器端匹配,我就可以在我的页面上做一些其他的事情。

任何人都可以想出一种方法来实现这一目标吗?:)

一旦数据源发生变化,有没有办法触发事件?

4

1 回答 1

0

我通过在小部件上使用 _busy 状态解决了这个问题。以下代码在小部件的选择函数中,因此每当有人失去焦点时,就会触发。

如果小部件不忙,它将完成 ajax 调用。希望这对某人有用:)

    if (data && data.length != 0) 
    {
        for (var i = 0; i < data.length; i++) 
        {
            li = $(that.ul).find('li:nth-child(' + (i + 1) + ')');
            if (li.length != 0 && data[i].ProductCode == that.input.val()) 
            {
                that._select(li);
                return;
            }
        }
    }
    if (that._busy && that._busy != null)
    {
        that.busyCheck = setInterval(function () {
            if (!that._busy || that._busy == null) {
                clearInterval(that.busyCheck);
                if (data && data.length != 0){
                    for (var i = 0; i < data.length; i++){
                        li = $(that.ul).find('li:nth-child(' + (i + 1) + ')');
                        if (li.length != 0 && data[i].ProductCode == that.input.val()){
                            that._select(li);
                            return;
                        }
                    }
                }
            }
        }, 50);
    } 
    that._AddcodeIsServerValid(false);
于 2014-05-29T06:33:03.557 回答