снова этот select и javascript
Друзья, помогите решить проблему.
Имеется форма select и js скрипт php <script type="text/javascript" src="{/js/city.js"></script> <form name="cityForm"> <select name="cityselect"> <option value="0">Выбрать город</option> <option value="1">Москва</option> <option value="2">Санкт-Петербург</option> <option value="3">Сочи</option> </form> и файл js ..... ..... ..... this.choose_id_city = function () { var id_city = document.getElementsByName("cityselect"); if ( id_city && id_city.length > 0 ) { id_city = id_city[0]; } this.num_category = id_city.value; ..... ..... } На сайте когда выбираешь select, значение value передается в javascript. Такая задача: передать значение value="2" через кнопку. Пробовал выбрать значение option через нажатия кнопки <form name="cityForm"> <select name="cityselect"> <option value="0">Выбрать город</option> <option value="1">Москва</option> <option value="2">Санкт-Петербург</option> <option value="3">Сочи</option> </form> <a href="javascript:void SetOption(document.cityForm.cityselect,'2')" class="button"></a> Господа помогите. Как передать в id_city значение 2? |
Это самый простой вариант, когда значение === порядку option
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="" name="myForm"> <select name="mySelect"> <option value="0">Выбрать город</option> <option value="1">Москва</option> <option value="2">Санкт-Петербург</option> <option value="3">Сочи</option> </select> </form> <button onclick="setOption(document.forms.myForm.mySelect, 2);">select #2</button> <script> function setOption(select, id) { if (!select || !id) return false; select[id].selected = true; } </script> </body> </html> А вот этот, если нужно указать на значение (Т.е html ниже - тоже прокатит). <option value="1231"></option> <option value="something"></option> function setOption(select, id) { if (!select || !id) return false; [].forEach.call(select.children, function(item) { if (+item.value === id) { item.selected = true; } }); } // или так function setOption(select, id) { if (!select || !id) return false; select.querySelector('option[value="'+ id +'"]').selected = true; } |
select меняется, но дело в том что, при смене(клика) select, срабатывает функция в /js/city.js ,
this.choose_id_city = function () { var id_city = document.getElementsByName("cityselect"); if ( id_city && id_city.length > 0 ) { id_city = id_city[0]; } this.num_category = id_city.value; а по нажатию кнопки только меняется выбор select, а реакции на скрипт никакой нет |
Nobir, че? :D Либо у меня голова уже не варит, либо вы какой-то бред написали.
но могу посоветовать сразу, смотрите в консоль, если там что-то типа setOption is not defined, то window.onload вам в помощь. |
Часовой пояс GMT +3, время: 00:44. |