jQuery UI自动完成功能无法在IE中运行

时间:2010-03-16 16:07:18

标签: javascript jquery jquery-ui jquery-ui-autocomplete

我在jQuery UI 1.8rc3中有新的自动完成小部件在Firefox中运行良好。它在IE中根本不起作用。有人可以帮助我吗?

HTML:

<input type="text" id="ctrSearch" size="30">
<input type="hidden" id="ctrId">

使用Javascript:

$("#ctrSearch").autocomplete({
    source: "ctrSearch.do",
    minLength: 3,
    focus: function(event, ui){
        $('#ctrSearch').val(ui.item.ctrLastName + ", " + ui.item.ctrFirstName);
        return false;
    },
    select: function(event, ui){
        $('#ctrId').val(ui.item.ctrId);
        return false;
    }
});

结果(IE 8):

红色框是jQuery创建的<ul>元素。

http://i40.tinypic.com/6q9quu.jpg

我也遇到了这个错误:

Line: 116
Error: Invalid argument.

当我在IE8脚本调试器中打开它时,它突出显示jquery.min.js第116行的f[b]=d。请注意,我正在使用托管在Google服务器(https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js)上的jQuery版本1.4.2。

我尝试删除了一些选项,但即使我在没有选项的情况下调用.autocomplete(),也没有选择源代码选项,我仍然会得到相同的结果。

再一次,它在Firefox中运行,但在IE中却没有。有什么建议吗?

感谢。

更新:按照建议,我使用了jquery.js(而不是jquery.min.js)并在第4618行得到了错误。请参阅下面的jitter答案。请参阅几天前发布的this other Stack Overflow question

更新2 我发现jQuery UI自动填充使用了无效的属性this.element.height,当它应该使用函数this.element.height()

2 个答案:

答案 0 :(得分:5)

如果我理解了这一点,那么您引用的行似乎就是style函数中jquery.1.4.2.js中的第4618行。这只能意味着Autocompleter插件尝试设置IE8不理解的样式值,或者不允许以这种方式访问​​/更改。

style[ name ] = value; //style == elem.style from the passed in element

答案 1 :(得分:1)

我在同一条线上有完全相同的错误,但对于一个完全不同的交易。也就是说,我没有做任何与自动完成有关的事情;相反,我的发生是因为我在jQuery中尝试这个......

$(this).css('background', 'rgba(64,255,64,.4)');

jQuery试图做什么......

style [ 'background' ] = 'rgba(64,255,64,.4)';

当然,它失败了,因为rgba不是Internet Explorer支持的CSS值。所以你并不孤单,但在我的情况下,我只是做错了。适当的jQuery语法就是这个......

$(this).css({backgroundColor: '#40ff40', opacity: .4});

这是我的来源......

http://www.cjs.me.uk/blog/?p=238