IE6,7,8中的jQuery UI自动完成和多个值

时间:2012-01-19 10:37:22

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

我有一个jQuery自动完成功能,适用于大多数浏览器,但只适用于IE6,7,8(适用于IE9) 选择第一个值后,如果按下向下箭头以获取可能值列表。我得到一个项目的列表,即已经选择的项目。我喜欢整个清单。

function split(term){
     return term.split(/,\s*/);
}

control.autocomplete({
        minLength: minLength,
        source: function (request, response) {
            // delegate back to autocomplete, but extract the last term
            response($.ui.autocomplete.filter(
                values, split(request.term).pop()));
        },
        select: function (event, ui) {
            var terms = split(this.value);
            // remove the current input
            terms.pop();
            // add the selected item
            terms.push(ui.item.value);
            // add placeholder to get the comma-and-space at the end
            terms.push("");
            this.value = terms.join(", ");
            updateConfiguration();
            return false;
        }
    });

1 个答案:

答案 0 :(得分:0)

事实证明,IE6,7和8处理分割功能中的正则表达式不同于IE9,Chrome和FF。如果最后一个元素只包含空格,那么它将被省略。

将splite函数更改为以下

function split(val) {
    //IE deviates from all other browser if the last entry is empty
    var temp = val.trim();
    var endsWithComma = temp.substring(temp.length-1) === ",";
    temp = endsWithComma ? temp.substring(0,temp.length-1) : temp;
    var values = temp.split(/,\s*/);
    if(endsWithComma)
      values[values.length] = " ";
    return values;
}