Более 2000 бросков выпадающего списка автозаполнения jQuery UI перестали отвечать - PullRequest
0 голосов
/ 03 мая 2011

Просто желая подтвердить, что я превысил практическое ограничение в поле со списком автозаполнения jQuery UI, я получаю следующую ошибку в FF:

Сценарий на этой странице может быть занят или это могло перестать отвечать. Вы можете остановить скрипт сейчас, откройте сценарий в отладчике, или пусть Продолжение сценария.

Страница представляет собой большую таблицу (более 2000 строк), сгенерированную из php, она собиралась содержать 7 из этих комбинированных блоков (7 столбцов) на строку, однако я едва могу пройти через первый столбец набора. Страница загружается и функционирует, но это занимает несколько минут, и браузер на некоторое время перестает отвечать на запросы.

Возможно, есть ли способ изменить JS, чтобы сделать его более эффективным? Ниже приведен пример JS, я использую php для вставки массива в скрипт (строка 3).

Код:

            <script type='text/javascript'>
  var input = new Array();
var i = 1;
<?php echo $JSElements; ?> //PHP
$('.TC_1').each(function(index) {

input[i] = $("[name=TC_"+i+"_1]").autocomplete({
    source: elementArray,
    select: function(){alert("selected");},
    minLength: 0
}).addClass("ui-widget ui-widget-content ui-corner-left");

//Get the id for the target field:
    var target = $(input[i]).attr('name');
    var ID = target.substr(3);

$("<button id='bt_"+ID+"' type='button'>&nbsp;</button>")
    .attr("tabIndex", -1)
    .attr("title", "Show All Items")
    .insertAfter(input[i])
    .button({
        icons: {
            primary: "ui-icon-triangle-1-s"
        },
        text: false
    })
    .removeClass("ui-corner-all")
    .addClass("ui-corner-right ui-button-icon")
    .click(function() {

        // close if already visible
        if ($("[name=TC_"+ID+"]").autocomplete("widget").is(":visible")) {
        $("[name=TC_"+ID+"]").autocomplete( "close" );
             return;
        }
        $(this).blur();
        $("[name=TC_"+ID+"]").autocomplete("search", "" );
        $("[name=TC_"+ID+"]").focus();
    });
    i++;
});
  </script>

Если нет способа заставить это работать? Кто-нибудь может предложить какие-либо альтернативы? Имейте в виду, что там будет около 8000 полей! Если нет, то моим последним средством является создание простого выпадающего списка ajax.

1 Ответ

1 голос
/ 03 мая 2011

Текущая версия плагина автозаполнения jQuery будет принимать URL, что делает Ajaxy очень простым в настройке и запуске.

Смотрите здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...