我有一个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;
}
});
答案 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;
}