Тема больше подходит в раздел JS, но мне ещё интересно, что бы её увидели PHP программисты. Надо задать свои стили для option (сменить фон при наведении и сделать отступы), готовые решения есть, но они очень громоздкие и я решил написать свой код, он работает, какие в нём есть недостатки? А php программист, за такое руки не оторвёт? PHP: <?php if(!empty($_POST['addQuestion'])) { if(!empty($_POST['chooceCity']) && !empty($_POST['chooceValue'])) { echo $_POST['chooceCity'] . ' <br>'; echo $_POST['chooceValue'] . ' <br>'; echo '<br>'; echo '<br>'; echo '<br>'; } else { echo 'Выберите город'; echo '<br>'; echo '<br>'; echo '<br>'; } } ?> Код (CSS): <style> .chooce-option { padding: 5px; width: 242px; height: 20px; display: inline-block; vertical-align: top; border: 1px solid; } .chooce-option:hover {cursor: pointer;} .chooce-value {display: none;} ul {padding: 0; list-style: none; } li { padding: 5px;} li:hover{ background: #0c6eb9; color: white;} .styled-select { width: 240px; height: 124px; overflow-x: hidden; border: 1px solid #ccc; display: none; } </style> HTML: <form method="post"> <input type="text" name="chooceCity" value= "-" class="chooce-option" readonly> <input type="text" value="0" name="chooceValue" class="chooce-value" readonly> <div class="styled-select"> <ul> <li data-value="1">Пункт 1</li> <li data-value="2">Пункт 2</li> <li data-value="3">Пункт 3</li> <li data-value="4">Пункт 4</li> <li data-value="5">Пункт 5</li> <li data-value="6">Пункт 6</li> <li data-value="7">Пункт 7</li> <li data-value="8">Пункт 8</li> <li data-value="9">Пункт 9</li> <li data-value="10">Пункт 10</li> <li data-value="11">Пункт 11</li> <li data-value="12">Пункт 12</li> </ul> </div> <br> <br> <input type="submit" value="Добавить вопрос" name="addQuestion"> </form> <script> var listCity = document.querySelector(".styled-select"); var showListCity = document.querySelector(".chooce-option"); var cityValue = document.querySelector(".chooce-value"); var options = document.querySelectorAll("li"); showListCity.addEventListener("click", function(e){ if(listCity.style.display != 'block') { listCity.style.display = 'block'; } else { listCity.style.display = 'none'; } options.forEach(function(item, i, arr) { options[i].addEventListener('click', function(t){ console.log(t.target.getAttribute("data-value")) showListCity.value = t.target.innerHTML; cityValue.value = t.target.getAttribute("data-value"); console.log(cityValue.value) listCity.style.display = 'none'; }) }); }) </script>
Делай как хочешь, если страница эта чисто для твоего пользования, но ты сам себе роешь яму. Другой человек в твоем коде вообще не разберется, а если и разберется, то потом менять тут что-то просто боль...
Я бы оторвал и как php программист и как js разработчик, а ещё как верстальщик. Заюзай select2 и не парь мозги