自动填充不会从列表中的单击元素上触发select()

时间:2012-10-10 12:44:14

标签: jquery jquery-ui jquery-ui-dialog jquery-ui-autocomplete

我正在使用jquery 1.4.4和jquery-ui 1.8.24。我有一个对话框,在该对话框中有一个链接。点击该链接后,我向用户显示一个带有自动填充功能的输入。当用户从自动完成列表中选择一个项目并点击输入键时,一切正常。不幸的是,当用户手动点击自动完成列表中的项目时,事件“选择”根本不会被调用,对话框会立即关闭。

另外,我正在使用很多live()和die()来防止将多个事件绑定到我的DOM元素。

$j("#" + id + "_selector:not(.ui-autocomplete-input)").die().live("focus", function (event) {

        $j(this).autocomplete({
            autoFocus:true,
            html:true,
            create:function() {
               // this always invokes
               console.log('autocomplete created');
            },
            source:function (request, response) {
                var term = request.term;
                if (term in cache) {
                    response(cache[term]);
                    return;
                }

                request.kind = settings.kind
                request.no_email_display = settings.no_email_display

                lastXhr = $j.getJSON(Routes.search_account_path().url, request, function (data, status, xhr) {
                    cache[ term ] = data;
                    if (xhr === lastXhr) {
                        response(data);
                    }
                });
                return false;
            },
            select: function(event, ui) {
                    // this one works only after selecting by keyboard and hitting entery key
                    var origEvent = event;
                    while (origEvent.originalEvent !== undefined)
                        origEvent = origEvent.originalEvent;
                    console.log(origEvent);                        
                },

        });
    }); 

我怀疑的是对话以某种方式从我的自动完成中接管点击事件。

如果有人能帮助我如何至少调试这个错误(工具?如何设置firebug,断点等?),我会很高兴,因为我意识到这个bug几乎不可能重现。

0 个答案:

没有答案