Пытается изменить asmselect для очень длинного списка выбора

У меня есть мультиселект на моей странице, использующий asmselect, который прекрасно работает.

Я пытаюсь добавить другой мультиселект на страницу, но столкнулся с проблемами. Есть около 11 000 опций, которые заставляют asmselect загружаться вечно, так как он проходит по всему списку в коде jquery asmselect. Даже если бы я мог улучшить время загрузки, пользователю было бы не так просто просмотреть весь список, чтобы найти свой вариант.

Мои мысли заключались в том, чтобы добавить кнопку, которая открывала бы диалоговое окно (я успешно использую диалоги в другом месте на странице для добавления опций для выбора списков), где пользователь может ввести некоторую информацию о фильтре, а затем выбрать из отфильтрованного списка. Таким образом, они вводят 101, и в нем перечисляются опции "10100", "22101", "31015" и т. Д. Они выбирают "10100". "10100" отображается на главном экране как выбрано. Затем они могут снова нажать кнопку и ввести "105", что даст им новый отфильтрованный список выбора, и они выберут "10500", который теперь отображается вместе с "10100" на главном экране.

Первый вопрос, есть ли лучший способ справиться с этим?

Во-вторых, могу ли я использовать форматирование для asmselect, чтобы отобразить мои вновь выбранные элементы, чтобы оно совпадало с форматированием моего другого asmselect, и использовать встроенную функцию "удалить" для отмены выбора элемента. Я смотрю на код asmselect, но мои знания jquery очень ограничены, и я не могу понять это. Может ли кто-нибудь указать мне правильное направление?

1 ответ

Решение

Я достиг этого благодаря наличию выпадающего списка параметров в диалоговом окне с помощью плагина droplistFilter. Когда в раскрывающемся списке был выбран параметр и была нажата кнопка "Добавить" в диалоговом окне, этот параметр был добавлен в мой мультиселектор (с использованием плагина asmselect) и установлен в значение "Выбранный", и я отключил этот параметр в раскрывающемся списке. В моем $(document).ready(function() { В раскрывающемся списке я выбрал каждый выбранный параметр в множественном выборе.

        $('#Vendor_IDs').asmSelect({
            sortable: false
        });
        $('#vendor').droplistFilter();
        $('#Vendor_IDs option:selected', this).each(function () {
            $("#vendor option[value='" + $(this).val() + "']").attr("disabled", true);
        });

        $('#popupAddVendor').dialog(
        {
            autoOpen: false,
            modal: true,
            width: 600,
            buttons:
            {
                'Add': function () {
                    var v = $('#vendor').val();
                    if (v.length > 1) {
                        $('#Vendor_IDs').append($('<option></option>').val(v).html($('#vendor option:selected').text()).attr("selected", true));
                        $('#Vendor_IDs').change();
                        $('#vendor option:selected').attr("disabled", true).attr("selected", false);
                        $('#vendor').attr('selectedIndex', 0);
                    }
                    $(this).dialog('close');

                },
                'Cancel': function () {
                    $(this).dialog('close');
                }
            }
        });
Другие вопросы по тегам