JQuery UI автозаполнение и несколько значений в IE6,7,8 - PullRequest
0 голосов
/ 19 января 2012

У меня есть автозаполнение 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 голосов
/ 20 января 2012

Оказывается, что IE6,7 и 8 обрабатывают регулярное выражение в функции разделения, отличной от IE9, Chrome и FF. если последний элемент состоит только из пробелов, он будет опущен.

Изменение функции сплита на нижеследующее исправило это

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;
}
...