Пытается изменить 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');
}
}
});