Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery UI自动完成和IE6,7,8中的多个值_Javascript_Internet Explorer_Jquery Ui_Jquery Ui Autocomplete - Fatal编程技术网

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

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

我有一个jqueryautocomplete,它可以在大多数浏览器中使用,但只有在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;
        }
    });

事实证明,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;
}