Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.09.2022, 19:35
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 202

связать два select по атрибуту class (выбранного первого option)
<select id="mark1" name="cover1">
<option class="cs1" value="1">****</option>
<option class="cs1" value="2">****</option>
<option class="cs0" value="3">****</option>
<option class="cs0" value="4">****</option>
</select>


<select id="mark2" name="cover2">
<option class="cs1" value="1">****</option>
<option class="cs1" value="2">****</option>
<option class="cs2" value="3">****</option>
<option class="cs2" value="4">****</option>
</select>



чтобы при выборе option в select id="mark1" например с class="cs1"

<option class="cs1" value="1">****</option>


во втором селекте id="mark2" остались только варианты с таким же class="cs1"

а остальные были скрыты?

Подскажите пожалуйста, пытался реализовать через плагин jquery chained selects

но там выбор идет по value а мне нужно именно по class
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2022, 20:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

зависимые селекты по классу
ufaclub,
data-class логичнее использовать
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            let cover1 = document.querySelector("#mark1");
            let cover2 = document.querySelector("#mark2");
            let options = [...cover1.options];
            let opts = [...cover2.options];
            cover1.addEventListener("change", function() {
                let cls = options[this.selectedIndex].className;
                let up = [...opts].filter(({
                    classList
                }) => classList.contains(cls) || !cls);
                cover2.options.length = 0;
                cover2.append(...up)
            })
        })
    </script>
</head>

<body>
    <select id="mark1" name="cover1" size="5">
<option>select</option>
<option class="cs1" value="1">cs1</option>
<option class="cs1" value="2">cs1</option>
<option class="cs0" value="3">cs0</option>
<option class="cs2" value="4">cs2</option>
</select>
    <select id="mark2" name="cover2" size="5">
<option class="cs1" value="1">cs1</option>
<option class="cs1" value="2">cs1</option>
<option class="cs2" value="3">cs2</option>
<option class="cs2" value="4">cs2</option>
</select>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2022, 20:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ufaclub,
тоже самое с атрибутом data-...
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            let cover1 = document.querySelector("#mark1");
            let cover2 = document.querySelector("#mark2");
            let options = [...cover1.options];
            let opts = [...cover2.options];
            cover1.addEventListener("change", function() {
                let cls = options[this.selectedIndex].dataset.class;
                let up = opts.filter(({
                    dataset
                }) => dataset.class === cls || !cls);
                cover2.options.length = 0;
                cover2.append(...up)
            })
        })
    </script>
</head>

<body>
    <select id="mark1" name="cover1" size="5">
<option>select</option>
<option data-class="cs1" value="1">cs1</option>
<option data-class="cs1" value="2">cs1</option>
<option data-class="cs0" value="3">cs0</option>
<option data-class="cs2" value="4">cs2</option>
</select>
    <select id="mark2" name="cover2" size="5">
<option data-class="cs1" value="1">cs1</option>
<option data-class="cs1" value="2">cs1</option>
<option data-class="cs2" value="3">cs2</option>
<option data-class="cs2" value="4">cs2</option>
</select>
</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2022, 07:24
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 202

спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связать два select Shurik Элементы интерфейса 32 20.09.2016 14:29
Проблемы с элементами select и input razorg1991 Элементы интерфейса 10 06.01.2016 01:09
Вывод у выбранного select текст под тегом option k_DizeL Общие вопросы Javascript 7 06.03.2015 00:52
как сделать select с "памятью" выбранного ранее состояния option ufaclub jQuery 5 11.04.2013 16:13
Cохранение выбранного option в select. NiCKSoNka Элементы интерфейса 17 05.03.2012 15:48