Javascript jQuery UI自动完成和IE6,7,8中的多个值
我有一个jqueryautocomplete,它可以在大多数浏览器中使用,但只有在IE6、7、8中才能使用(在IE9中可以使用) 选择第一个值后,如果按下向下箭头以获取可能值的列表。我得到的列表中正好有一个项目,即已选中的项目。我想要完整的清单Javascript jQuery UI自动完成和IE6,7,8中的多个值,javascript,internet-explorer,jquery-ui,jquery-ui-autocomplete,Javascript,Internet Explorer,Jquery Ui,Jquery Ui Autocomplete,我有一个jqueryautocomplete,它可以在大多数浏览器中使用,但只有在IE6、7、8中才能使用(在IE9中可以使用) 选择第一个值后,如果按下向下箭头以获取可能值的列表。我得到的列表中正好有一个项目,即已选中的项目。我想要完整的清单 function split(term){ return term.split(/,\s*/); } control.autocomplete({ minLength: minLength, source: f
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;
}
});
事实证明,IE6、7和8在split函数中处理正则表达式的方式不同于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;
}