Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Поместить в local.storage выбранный option из select. (https://javascript.ru/forum/events/36780-pomestit-v-local-storage-vybrannyjj-option-iz-select.html)

budda555 24.08.2019 15:20

возможность Multiselect
 
Цитата:

Сообщение от danik.js (Сообщение 285897)
<select id="abc">
    <option value="1">1</option>
    <option value="2">3</option>
    <option value="3">4</option>
    <option value="4">5</option>
    <option value="5">5</option>
</select>
<select id="cde">
    <option value="1">1</option>
    <option value="2">3</option>
    <option value="3">4</option>
    <option value="4">5</option>
    <option value="5">5</option>
</select>
<script>
(function(){
    var selects = document.querySelectorAll('select');
    for (var i = 0, select; select = selects[i]; i++) {
        if (localStorage[select.id] !== undefined) {
            select.selectedIndex = localStorage[select.id];
        }
        select.onchange = function() {
            localStorage[this.id] = this.selectedIndex;
        }
    }
})()
</script>

Приветствую!
А какой будет код, если у нас 3 select-а и 2 из них должны быть multiselect?

рони 24.08.2019 18:06

localStorage сохранение выбраных option
 
budda555,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

</head>

<body>
<select class="abc">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<select class="abc" multiple="multiple" size="5">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<select class="abc" multiple="multiple" size="5">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<script>
(function(){
    const selects = document.querySelectorAll('select.abc');
      let selected = JSON.parse(localStorage.selected || "[]");
      [...selects].forEach((select, i) => {
      select.onchange = function() {
          let {selectedOptions} = select;
          selectedOptions = [...selectedOptions].map(({index})=> index);
          selected[i] = selectedOptions;
          localStorage.selected = JSON.stringify(selected)
        }
       const selectedOptions = selected[i]||[];
       [...select.children].forEach((option, i) => option.selected = selectedOptions.includes(i))
     })
})()
</script>
</body>
</html>

budda555 24.08.2019 22:05

рони,
Браво!


Часовой пояс GMT +3, время: 21:08.