Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как заставить работать .change для <select> где-то, кроме оперы? (https://javascript.ru/forum/jquery/12260-kak-zastavit-rabotat-change-dlya-select-gde-krome-opery.html)

InviS 09.10.2010 14:34

Как заставить работать .change для <select> где-то, кроме оперы?
 
По событию .chage я подгружаю и вывожу координаты выбранного человека... Когда из списка выбирают мышкой, то все хорошо, но если начинают листать с помощью клавиатуры, то во всех браузерах, кроме Opera ничего не происходит. Вот страничка, чтоб глянуть нерабочее событие.
Смотреть пункт МЕНЕДЖЕР. Пролистывание стрелочками неработает. Помогите, пожалуйста...

InviS 09.10.2010 15:06

Этот скрипт удаляет изменения на стрелках и в Опере. По-моему не оч. клевое решение. Никто не знает более красивого решения?

monolithed 09.10.2010 17:40

Не очень красиво т.к. на скорую руку писал, но функционал вроде бы этот нужен:

<script type="text/javascript">
window.onload = function() {
    var menu = document.getElementById("menu");
    var select = menu.getElementsByTagName('select');
    var div = menu.getElementsByTagName('div')[0];
    for(i=0; i<select.length; i++){
		select[i].onkeyup = function(){
			div.innerHTML = this.options[this.selectedIndex].value;
		};
		select[i].onchange = function(){
			div.innerHTML = this.options[this.selectedIndex].value;
		};
    }
};
</script>
<div id="menu">
	<form action="" method="get">
	    <select>
		<option value="">Выберите менеджера</option>
		<option value="Телефон: +01<br />Email: manager@1.dn.ua">Юля</option>
		<option value="Телефон: +02<br />Email: manager@2.dn.ua">Вася</option>
		<option value="Телефон: +03<br />Email: manager@3.dn.ua">Дима</option>
		<option value="Телефон: +04<br />Email: manager@4.dn.ua">Петя</option>
	   </select>
	</form>
	<div></div>
</div>

InviS 09.10.2010 22:02

Реализовал все гораздо проще:
$(".manager").keyup(function(e){
		if (e.keyCode>=37 && e.keyCode<=40) {
		  // мой обработчик для .change()
		}
	});

Но за идею спасибо!


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