связать два 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 |
зависимые селекты по классу
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> |
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> |
спасибо!
|
Часовой пояс GMT +3, время: 17:24. |