jrails自动完成选择DIV或其他任何问题

时间:2009-12-02 13:55:24

标签: jquery ruby-on-rails autocomplete jrails jrails-auto-complete

我刚开始使用jRails和jRails auto_complete helper

http://github.com/evilmarty/jrails_auto_complete

我在使用原型之前使用了默认的auto_complete助手,并且除了将鼠标悬停在自动完成的结果上之外,使用jRails工作正常。如果您使用简单文本作为结果,它的工作方式与广告一样。但我一直在我的部分使用几个div,它生成自动完成的输出。

<li class="location"><div class="image"><img src="/images/flags/<%=h image %>.png"/></div><div class="name"><%=h location.keyword %>,</div><div class="country"> <%=h location.sideinfo %></div></li>

它看起来一样,并且所有CSS都工作并且看起来和以前一样,但选择或悬停在结果上是混乱的。如果您将鼠标悬停在文本周围的背景上,它只允许选择...标记中的任何内容(div,span等)都会导致悬停消失,单击它不会将文本添加到文本框中。

还有其他人有过类似的问题吗?

1 个答案:

答案 0 :(得分:1)

我知道有点晚了,但我今天也遇到了同样的问题。

这一切归结为mouseover事件冒泡从子对象显然缺少autocompleteIndex属性(它仅在LI元素上分配。因此,一旦指针超过其中一个子节点,突出显示就消失了。

我最终改变了这样的jrails_autocomplete.js:


    onHover: function(e) {
        var my_index = e.target.autocompleteIndex;
        if (!my_index) {
          my_index = $(e.target).closest('li').attr('autocompleteIndex');
        }
        if (this.index != my_index) {
            this.index = my_index;
            this.render();
        }
        stopEvent(e);
    },

现在,如果我们在触发mouseover事件的元素中找不到autocompleteIndex属性,我们会查看最近的类型'li'的父级,并使用那里存在的任何内容。

有点hackish,但至少对我有用。

在旁注中,我也不得不痒痒onClick,或者当我点击鼠标并点击一个,比方说,DIV元素时,索引丢失了。实际上我想知道为什么这首先出现在那里,键盘界面也不包括类似的东西。


        onClick: function(e) {
            /*this.index = e.target.autocompleteIndex;*/
            this.selectEntry();
            this.hide();
        },