自动完成功能适用于Chrome但不适用于IE

时间:2013-11-26 05:12:39

标签: javascript jquery internet-explorer google-chrome

我正在尝试设置一个包含自动填充功能的搜索框。这是由我的一个朋友写的,但他也无法让它在IE中工作。它在chrome方面效果很好。它需要在IE中工作,因为将使用它的人没有Chrome。 这是代码:

<style>
    .ui-autocomplete-category {
        font-weight: bold;
        padding: .4em .8em;
        margin: 1.0em 0 .4em;
        line-height: 1.5;
    }
</style>

<script>
    $j.widget("custom.Complete", $j.ui.autocomplete, {
        _renderMenu: function (ul, items) {
            var that = this,
                currentCategory = "";
            $j.each(items, function (index, item) {
                if (item.category != currentCategory) {
                    ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
                    currentCategory = item.category;
                }
                that._renderItemData(ul, item);
            });
        }
    });
</script>
<script>
    $j(function () {
        var data = [{
            label: "Call types",
            category: "Call Flow"
        }, {
            label: "Review",
            category: "Call Flow"
        }, {
            label: "Mikatron",
            category: "Decepticon"
        }, {
            label: "Eric Prime",
            category: "Transformer"
        }, ];

        $j("#SearchResult").Complete({
            delay: 0,
            source: data,
            appendTo: '#menu-container',
        });
    });
</script>

任何想法?我已经工作了好几个小时了。

1 个答案:

答案 0 :(得分:0)

IE在对象文字中的尾随逗号失败(并且非常正确)。

在你的 Eric Prime 对象之后,你有一个逗号。删除它,即这......

{
    label: "Eric Prime",
    category: "Transformer"
}, ];

变成这个

{
    label: "Eric Prime",
    category: "Transformer"
}];

更新

此处还有另一个尾随逗号......

$j("#SearchResult").Complete({
    delay: 0,
    source: data,
    appendTo: '#menu-container', // <-- here
});