Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   снова этот select и javascript (https://javascript.ru/forum/server/58188-snova-ehtot-select-i-javascript.html)

Nobir 09.09.2015 06:20

снова этот 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?

Lemme 09.09.2015 10:22

Это самый простой вариант, когда значение === порядку 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;
}

Nobir 09.09.2015 19:26

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, а реакции на скрипт никакой нет

Lemme 09.09.2015 19:40

Nobir, че? :D Либо у меня голова уже не варит, либо вы какой-то бред написали.

но могу посоветовать сразу, смотрите в консоль, если там что-то типа setOption is not defined, то window.onload вам в помощь.


Часовой пояс GMT +3, время: 02:17.