1

这真的很奇怪。

在我做的网络应用程序中(看这里),感谢cloudant 的家伙免费托管,我终于实现了Jquery UI 自动完成小部件。

我正在使用主干作为框架。

真正奇怪的是它适用于所有东西(甚至是 IE9!),除了苹果操作系统上的 Chrome。

我所拥有的是单击文本输入字段时没有出现下拉列表。

Chrome 在不同的操作系统工作(例如在 win7 上)。

这是我用来实现小部件的代码,为了完整起见,我报告了她,即使我认为我遇到的问题不依赖于代码。

        $(select).on("click",function(){
            var valori=["ex1", "ex2", "ex3"];
            $(input).autocomplete({
                minLength: 0,
                source: valori,
                focus:function(){
                    },
                select:function(event, ui){

                    var categoria=$(select).attr('value');
                    var valore=ui.item.value;
                    self.model.set({category:categoria, value:valore});
                    //~ console.log(self.model);
                    return true;
                    }
                }).focus(function() {
            $(this).autocomplete("search", "");
                });
            });

- - 更新 - - -

我比较了在 ubuntu 上运行的 chrome 和在 macOS 上运行的 chrome。

结果是在 ubuntu 下,DOM 元素被创建(在关闭 body 标签之前),而在 macosx 下,DOM 元素根本没有被创建。

看起来在 macOS 下 onclick 事件没有被捕获。

4

1 回答 1

0

我在这里找到了一个非常有用的帖子 为什么 mac chrome 上的选择框不响应点击事件?

基本上,这是OSX下chrome的一个bug。

正如@JamWaffles 在其回答中解释的那样,“IIRC,点击事件在 Firefox 中适用于 s,但在 Chrome 中不起作用。最好、最受支持的事件是更改。” 事实证明这是完全正确的!

所以我的 webapp 的工作代码是:

$(select).change(function(){//**************CHANGE AND NOT ON('CLICK', ...  *******
        var valori=["ex1", "ex2", "ex3"];
        $(input).autocomplete({
            minLength: 0,
            source: valori,
            focus:function(){
                },
            select:function(event, ui){

                var categoria=$(select).attr('value');
                var valore=ui.item.value;
                self.model.set({category:categoria, value:valore});
                //~ console.log(self.model);
                return true;
                }
            }).focus(function() {
        $(this).autocomplete("search", "");
            });
        });

希望这个答案对其他人有用。

于 2012-10-17T13:30:48.863 回答