Старые значения из множественного выбора в Laravel 10 и select2 ⇐ Jquery
Старые значения из множественного выбора в Laravel 10 и select2
В моем проекте Laravel я использую select2, чтобы иметь простую систему фильтров. Одна из вещей, которую я хочу сделать, — это сохранить старые значения во входных данных после фильтрации (и оставить их выбранными в серверной части). Я пытался сделать это несколькими способами, но Laravel этого не поддерживает. Я новичок в Laravel, поэтому большинство из них были попытками и ошибками новичков.
Код, который у меня есть, лучше всего объяснить в текстовом виде, но ради я также оставил код ниже.
Просмотры/product-search.blade.php
Имеет выбранный мультиплексор, к которому прикреплены 3 функции.
1: если форма отправлена → удалите атрибут имени из элемента выбора
2: onchange → добавить идентификатор базы данных выбранного параметра в скрытый ввод
3: onwindowload → установите для ввода значение «-- Выберите сертификаты --»
Я думаю, что я хочу добавить параметр к третьей функции в заполнителе, который устанавливает выбранные значения в поле заполнителя.
Но у меня есть и другое представление — компонент:
views/comComponent/select2.blade.php
Это компонент многократного использования, поэтому идентификаторы являются динамическими, но сохраняются во всем файле.
Здесь меня это сбивает с толку, потому что есть @if(!$multiple), поэтому, если Multiple имеет значение false. Другими словами, у него нет свойства Multiple, верно?
В этом файле также есть часть сценария, в которой используются две основные функции. У него также есть третий, но это $.focus(). Этот сценарий, кроме этого, говорит сам за себя.
Теперь код ниже:
views/product-search.blade.php
Сертификаты Из-за большого количества сертификатов загрузка может занять более 15 секунд
{{-- А потом какой-нибудь скрипт @pushonce --}} $('#product_search_form').submit(function () { $('input[name="certificates"]').remove(); }); // Если входные данные изменились, отредактируйте сертификат соответствующим образом $('#сертификаты').change(function () { пусть сертификаты = ''; пусть selected_certificates = $(this).children().length; $(this).children().each(function (i, el) { сертификаты += $(el).val(); если (я !== (выбранные_сертификаты - 1)) сертификаты += ','; }); $('#product_certificates').val(сертификаты); }); // Устанавливаем входные данные по умолчанию. // ЗАДАЧА: изменить заполнитель, чтобы включить старые выбранные и исключить их из поиска $('#сертификаты').select2({ тема: «бутстрап-5», ширина: $(this).hasClass('w-100') ? «100%»: «стиль», заполнитель: '-- Выберите сертификаты --', allowClear: Boolean($(this).data('allow-clear')), аякс: { URL: 'автозаполнение/исключения для продуктов', Тип данных: 'JSON', задержка: 250, данные: функция (параметры) { возвращаться { термин: params.term || '', страница: params.page || 1 } }, кэш: правда } }); });
views/comComponent/select2.blade.php
@isset ($заполнитель) @if (!$множественный) {{ $placeholder }} @endif @endisset @push('push-скрипт') $(документ).ready(функция () { let Placeholder = $(this).attr('placeholder'); if ('{{ $placeholder }}' !== '' && '{{ $multiple }}' === 'несколько') { заполнитель = '{{ $placeholder }}'; } $('select[name="{{ $name }}"]').select2({ тема: «бутстрап-5», ширина: $(this).data('ширина') ? $(this).data('width'): $(this).hasClass('w-100') ? «100%»: «стиль», заполнитель: заполнитель, allowClear: Boolean($(this).data('allow-clear')), аякс: { URL: '{{ $url }}', Тип данных: 'JSON', задержка: 250, данные: функция (параметры) { возвращаться { термин: params.term || '', страница: params.page || 1 } }, кэш: правда } }); }); @endpush И чтобы мой последний вопрос был ясен: как я могу добавить несколько старых выбранных значений в правильный скрипт(ы) и как предотвратить их повторную фильтрацию (т. е. после того, как вы нажмете поиск, вы сохраните сертификат1 как выбрано и в списке его нельзя выбрать повторно)
Я надеюсь, что это объяснение и код сделали все понятным и понятным. Спасибо!
Я попробовал несколько вещей, но у меня слишком ограниченные знания о select2 и недостаточно знаний о Laravel, чтобы объединить эти два варианта в старый множественный выбор. Из-за некоторых сложностей с тем, как мы все «внедряем», другие публикации, похоже, тоже не помогли.
В моем проекте Laravel я использую select2, чтобы иметь простую систему фильтров. Одна из вещей, которую я хочу сделать, — это сохранить старые значения во входных данных после фильтрации (и оставить их выбранными в серверной части). Я пытался сделать это несколькими способами, но Laravel этого не поддерживает. Я новичок в Laravel, поэтому большинство из них были попытками и ошибками новичков.
Код, который у меня есть, лучше всего объяснить в текстовом виде, но ради я также оставил код ниже.
Просмотры/product-search.blade.php
Имеет выбранный мультиплексор, к которому прикреплены 3 функции.
1: если форма отправлена → удалите атрибут имени из элемента выбора
2: onchange → добавить идентификатор базы данных выбранного параметра в скрытый ввод
3: onwindowload → установите для ввода значение «-- Выберите сертификаты --»
Я думаю, что я хочу добавить параметр к третьей функции в заполнителе, который устанавливает выбранные значения в поле заполнителя.
Но у меня есть и другое представление — компонент:
views/comComponent/select2.blade.php
Это компонент многократного использования, поэтому идентификаторы являются динамическими, но сохраняются во всем файле.
Здесь меня это сбивает с толку, потому что есть @if(!$multiple), поэтому, если Multiple имеет значение false. Другими словами, у него нет свойства Multiple, верно?
В этом файле также есть часть сценария, в которой используются две основные функции. У него также есть третий, но это $.focus(). Этот сценарий, кроме этого, говорит сам за себя.
Теперь код ниже:
views/product-search.blade.php
Сертификаты Из-за большого количества сертификатов загрузка может занять более 15 секунд
{{-- А потом какой-нибудь скрипт @pushonce --}} $('#product_search_form').submit(function () { $('input[name="certificates"]').remove(); }); // Если входные данные изменились, отредактируйте сертификат соответствующим образом $('#сертификаты').change(function () { пусть сертификаты = ''; пусть selected_certificates = $(this).children().length; $(this).children().each(function (i, el) { сертификаты += $(el).val(); если (я !== (выбранные_сертификаты - 1)) сертификаты += ','; }); $('#product_certificates').val(сертификаты); }); // Устанавливаем входные данные по умолчанию. // ЗАДАЧА: изменить заполнитель, чтобы включить старые выбранные и исключить их из поиска $('#сертификаты').select2({ тема: «бутстрап-5», ширина: $(this).hasClass('w-100') ? «100%»: «стиль», заполнитель: '-- Выберите сертификаты --', allowClear: Boolean($(this).data('allow-clear')), аякс: { URL: 'автозаполнение/исключения для продуктов', Тип данных: 'JSON', задержка: 250, данные: функция (параметры) { возвращаться { термин: params.term || '', страница: params.page || 1 } }, кэш: правда } }); });
views/comComponent/select2.blade.php
@isset ($заполнитель) @if (!$множественный) {{ $placeholder }} @endif @endisset @push('push-скрипт') $(документ).ready(функция () { let Placeholder = $(this).attr('placeholder'); if ('{{ $placeholder }}' !== '' && '{{ $multiple }}' === 'несколько') { заполнитель = '{{ $placeholder }}'; } $('select[name="{{ $name }}"]').select2({ тема: «бутстрап-5», ширина: $(this).data('ширина') ? $(this).data('width'): $(this).hasClass('w-100') ? «100%»: «стиль», заполнитель: заполнитель, allowClear: Boolean($(this).data('allow-clear')), аякс: { URL: '{{ $url }}', Тип данных: 'JSON', задержка: 250, данные: функция (параметры) { возвращаться { термин: params.term || '', страница: params.page || 1 } }, кэш: правда } }); }); @endpush И чтобы мой последний вопрос был ясен: как я могу добавить несколько старых выбранных значений в правильный скрипт(ы) и как предотвратить их повторную фильтрацию (т. е. после того, как вы нажмете поиск, вы сохраните сертификат1 как выбрано и в списке его нельзя выбрать повторно)
Я надеюсь, что это объяснение и код сделали все понятным и понятным. Спасибо!
Я попробовал несколько вещей, но у меня слишком ограниченные знания о select2 и недостаточно знаний о Laravel, чтобы объединить эти два варианта в старый множественный выбор. Из-за некоторых сложностей с тем, как мы все «внедряем», другие публикации, похоже, тоже не помогли.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу отобразить выбранные параметры множественного выбора в этом приложении Laravel 8?
Anonymous » » в форуме Php - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Вопрос о select2. Старая строка становится обычным HTML и больше не становится select2.
Anonymous » » в форуме Jquery - 0 Ответы
- 125 Просмотры
-
Последнее сообщение Anonymous
-