Сохранение выбранных значений в поле в Select2

85
11 апреля 2022, 03:30

Всем привет! Я использую плагин Select2 для выбора значений. Я выбираю значения, они красиво вставляются в input. Но при отправке формы я перехожу на другую страницу и у меня должна быть возможность вернуть на страницу с выбором из select с сохранением заполненных мной полей. Они как бы выбраны, но почему-то не отображаются в инпуте.

И если выбрать какое-то поле, то и прошлые отобразятся сразу же, и новые Вот, например, если выбрать третье значение, то и 2 прошлых тоже отобразятся

Не подскажите, как сделать так, чтобы при возврате страницы, сразу же отображались введенные раннее значения в инпутах?

<select id="e20" name="know[]" multiple="multiple">
    <option data-badge="">Систематизировать</option>
    <option data-badge="">Собирать</option>
    <option data-badge="">Определить</option>
    <option data-badge="">Описать</option>
  </select>
<script>
     $("#e20").select2({
      tags:[],
      tokenSeparators: [",", " "]});
</script>

Вот начало формы

 <form method="POST" action="upload1.php" class="dropzone" id="dropzoneFrom" enctype="multipart/form-data">

То есть при нажатии переходим на upload1.php и нужно, чтобы при возвращении на index.php сохранялись значения в input.

Реализация input в JS

Search.prototype.render = function (decorated) {
var $search = $(
'<li class="select2-search select2-search--inline">' +
'<input class="select2-search__field" type="search" tabindex="-1"' +
' autocomplete="off" autocorrect="off" autocapitalize="none"' +
' spellcheck="false" role="searchbox" aria-autocomplete="list" />' +
'</li>'
);
Answer 1

Первый файл:

<?php
if(isset($_COOKIE['select'])){
    $val1 = $_COOKIE['select']; // Получаем куки, если он есть.
    $val = json_decode($val1); // Преобразуем в массив.
}  else {
    $val = []; // Если куки нет, то пустой массив.
}
print_r($val); // Это для демонстации сохранения данных при возврате (После теста удалите).
?>
<form method="POST" action="upload1.php" class="dropzone" id="dropzoneFrom" enctype="multipart/form-data">
    <select id="e20" name="know[]" multiple="multiple">
        <option data-badge="" <?php if(in_array('Систематизировать', $val)){ echo "selected";}?>>Систематизировать</option>
        <option data-badge="" <?php if(in_array('Собирать', $val)){ echo "selected";}?>>Собирать</option>
        <option data-badge="" <?php if(in_array('Определить', $val)){ echo "selected";}?>>Определить</option>
        <option data-badge="" <?php if(in_array('Описать', $val)){ echo "selected";}?>>Описать</option>
    </select>
    <button formmethod="post">Отправить</button>
</form>

Второй файл - upload.php


if(isset($_POST['know'])){ //Получаем данные селекта
    $val1 = $_POST['know']; // Сохраняем в переменную
    $val = json_encode($val1); // Кодируем массив в строку
    setcookie("select", $val); // Сохраняем в куки.
}
READ ALSO
Не меняется значение value в input

Не меняется значение value в input

Есть данный код, не могу заставить изменяться поля для ввода, при вводе данный ничего не происходит

172
Как открыть 404.htm, если нет страницы с выбранным условием?

Как открыть 404.htm, если нет страницы с выбранным условием?

Этот код при нажатии на дату открывает страницу соответствующую выбранной дате

177
Как убрать presense у бота? (discord.js)

Как убрать presense у бота? (discord.js)

Допустим сначала было прописано:

202
Webdriver io, загрузка файла через input type=&quot;file&quot;

Webdriver io, загрузка файла через input type="file"

Я пишу тесты на CoffeeScript с использованием Webdriverio и mocha

141