原型Rails3自动完成在IE8中无法正常显示

时间:2010-12-23 09:15:26

标签: ruby-on-rails ruby-on-rails-3 prototypejs

在我的rails3项目中,我必须在视图文件中实现一个简单的文本字段,一个div和一个自动完成帮助器。自动完成在IE以外的所有浏览器中都能正常运结果落入的div元素不断更改其样式属性。这是代码。

            .. #form related other code
            <%= text_field_tag('location') %>
            <div id="location_auto_complete" class="auto_complete"> </div>
        <%= auto_complete_field('location', :url => locations_path(), :indicator => 'locations_indicator', :select => 'value') %>

它适用于所有浏览器。但在IE中,自动建议框错位到页面中的其他部分。每当有来自服务器的响应时,都会动态地将style属性添加到该div元素。

我正在使用最新的rails自动填充插件https://github.com/fidel/auto_complete。请帮忙,我几个小时都遇到了这个问题。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。显然,Prototype的getOffsetParent函数和IE8是一个问题:

https://prototype.lighthouseapp.com/projects/8886-prototype/tickets/618-getoffsetparent-returns-body-for-new-hidden-elements-in-ie8-final#ticket-618-9

原型相当令人尴尬的是,由于该主题是从2009年3月开始,所以仍然没有修复。

无论如何,正如该线程中有人提到的那样,您可以编辑prototype.js文件并将getOffsetParent的第一行更改为:

  getOffsetParent: function(element) {
    if (element.offsetParent && Element.visible(element)) return $(element.offsetParent);
  ...

&& Element.visible(element)是新部分。这为我修好了。确保在IE8中进行硬刷新(shift-reload),以便在更改后获取新的JS。