Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как вывести значение выбранного селекта в блок? (https://javascript.ru/forum/events/41308-kak-vyvesti-znachenie-vybrannogo-selekta-v-blok.html)

And5 08.09.2013 02:49

Как вывести значение выбранного селекта в блок?
 
Всем доброго времени суток! Есть селект такого вида:
<select id="id3" name="option[230]" class="select-menu">
<option value="21" points="0" price_prefix="+" price="0.0000">1																</option>
<option value="22" points="0" price_prefix="+" price="1000.0000">2																
(+1000.00 р.)      
</option>
<option value="23" points="0" price_prefix="+" price="2000.0000">3																
(+2000.00 р.)      
</option>
<option value="24" points="0" price_prefix="+" price="3000.0000">4																
(+3000.00 р.)     
</option>
</select>

Нужно вывести значение выбранного опшн, например 3(+2000.00 р.) в другой блок. Как определить? Как сделать? Опшн выбирается скриптом.:help: плииз!

danik.js 08.09.2013 06:46

// var select = ??? , короче селект должен быть определен
var selectedOption = select.selectedOption;
alert(selectedOption.innerHTML);

And5 10.09.2013 19:47

Цитата:

Сообщение от danik.js (Сообщение 271361)
var selectedOption = select.selectedOption;
alert(selectedOption.innerHTML);

<p id="selectedOption"></p>
<script type="text/javascript">
var selectedOption = select.selectedOption;
alert(selectedOption.innerHTML);
</script>

Так? Не выводит ничего:cray: .

danik.js 10.09.2013 20:06

var selectedOption = document.getElementById('id3').selectedOption;
document.getElementById('selectedOption').innerHTML = selectedOption.innerHTML;

And5 10.09.2013 20:16

Ошибка: Uncaught TypeError: Cannot read property 'innerHTML' of undefined

And5 10.09.2013 20:17

Там jquery подключен

danik.js 10.09.2013 20:38

Тьфу блин.
var selectedOption = document.getElementById('id3').selectedOptions[0];
document.getElementById('selectedOption').innerHTML = selectedOption.innerHTML;

And5 10.09.2013 20:47

результат:undefined
но ошибка пропала

danik.js 10.09.2013 20:49

Ну мож тогда
selectedOption.innerText || selectedOption.textContent || ''

Хотя проще функцию из библиотеки jQuery использовать:

$(selectedOption).text()

And5 10.09.2013 21:00

И как в итоге, чет не соображу

рони 10.09.2013 21:04

:-?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<select id="id3" name="option[230]" class="select-menu">
<option value="21" points="0" price_prefix="+" price="0.0000">1</option>
<option value="22" points="0" price_prefix="+" price="1000.0000">2(+1000.00 р.)</option>
<option value="23" points="0" price_prefix="+" price="2000.0000" selected="selected"   >3(+2000.00 р.)</option>
<option value="24" points="0" price_prefix="+" price="3000.0000">4(+3000.00 р.)</option>
</select>
<script>
var select = document.getElementById('id3');
var indx = select.selectedIndex || 0;
alert(select.options[indx].text);
</script>
</body>

</html>

And5 10.09.2013 22:37

выводит!!:no: при загрузке страницы только, первое значение. Надо обработчик какой-нибудь что-ли

And5 10.09.2013 23:03

Супер!, только не алертом надо, а в отдельный блок. Сорри, только сейчас понял, что не совсем корректно вопрос задал. Имеется: селект, который при загрузке страницы имеет опшн 0. Надо: выводить значение опции (не вэлью, а текст в тэгах option) в отдельный блок при выборе опции мышкой. Видимо функция для обработчика нужна, чтоб менялось содержимое при выборе.

And5 10.09.2013 23:51

<select id="id3" name="option[230]" class="select-menu" onchange="kategory();">
<option value="21" points="0" price_prefix="+" price="0.0000">1                                                               </option>
<option value="22" points="0" price_prefix="+" price="1000.0000">2                                                               
(+1000.00 р.)     
</option>
<option value="23" points="0" price_prefix="+" price="2000.0000">3                                                               
(+2000.00 р.)     
</option>
<option value="24" points="0" price_prefix="+" price="3000.0000">4                                                               
(+3000.00 р.)    
</option>
</select>


<script type="text/javascript">
function kategory()
{
var selectedOption = document.getElementById('id3').selectedOptions[0];
document.getElementById('selectedOption').innerHTML = selectedOption.innerHTML;
}
</script>

Да заработало!! Только при начальной загрузке страницы не отображает, как решить? onload написать?

рони 11.09.2013 01:05

Цитата:

Сообщение от danik.js
var selectedOption = document.getElementById('id3').selectedOptions[0];

где прочитать что это за свойство и какими браузерами поддерживается selectedOptions ?

danik.js 11.09.2013 07:13

Хм, действительно, оказывается это HTML5 свойство и оно имеет хреновую поддержку среди браузеров (старых по крайней мере): http://stackoverflow.com/questions/1...ions-broken-or
Так что лучше избегать его использования пока что.

And5 11.09.2013 10:27

дааа, в ie не работает: SCRIPT5007: Не удалось получить свойство "0" ссылки, значение которой не определено или является NULL
Спотыкается на этой строчке:
window.opener.kategory()

в мозилле тоже, но ie только kategory() не работает, а в ней window.opener не понимает
и что делать?

danik.js 11.09.2013 10:36

Почему то думал что это старое свойство, так как свойства selectedIndex недостаточно , учитывая что селекты могут быть такими:
<select multiple size=2>
  <option>Bla Bla Bla</option>
  <option>Bla Bla Bla</option>
</select>

Как же в таких случаях получать массив выбраных опшнов?

рони 11.09.2013 10:54

danik.js,
Цитата:

Если select допускает множественный выбор (атрибут multiple), то значения можно получить/установить, сделав цикл по select.options:
http://learn.javascript.ru/form-elements#select-option

danik.js 11.09.2013 10:59

Ну это понятно - тупой перебор в цикле.
Мне вот интересно о чем думал человек, предложивший свойство multiple, но не подумавший о том, как же получить список выбранных опшнов.

And5 11.09.2013 12:01

вместо
window.opener.id3.selectedIndex = $(this).attr("kat");

написал
window.opener.document.getElementById('id3').selectedIndex = $(this).attr("kat");

в мозилле заработало, а как сделать с
window.opener.kategory()

не знаю. Не подскажете почтеннейшие?

And5 11.09.2013 15:30

вместо
Цитата:

Сообщение от danik.js (Сообщение 271741)
var selectedOption = document.getElementById('id3').selectedOption;
document.getElementById('selectedOption').innerHTML = selectedOption.innerHTML;

сделал так
function kategory()
{
var selectedOption = $('#id3 option:selected').text();
document.getElementById('selectedOption').innerHTML = selectedOption.innerHTML;
 }

почему не работает? вроде по аналогии

And5 11.09.2013 17:39

Цитата:

Сообщение от And5 (Сообщение 271843)
вместо

сделал так
function kategory()
{
var selectedOption = $('#id3 option:selected').text();
document.getElementById('selectedOption').innerHTML = selectedOption.innerHTML;
 }

почему не работает? вроде по аналогии

заработало везде так:
function kategory()
{
var selectedOption = $('#id3 option:selected').text();
document.getElementById('selectedOption').innerHTML = selectedOption;
 }

And5 11.09.2013 18:32

Спасибо рони и danik.js, узнал много нового!


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