снова этот 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, время: 11:59. |