Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   event.target + chrome и safari (select > option) (https://javascript.ru/forum/events/16405-event-target-chrome-i-safari-select-option.html)

poorking 06.04.2011 18:08

event.target + chrome и safari (select > option)
 
Здравствуйте, когда назначаю обработчик на выпадающий select, то FF4, opera11 и ie9 правильно определяют target, но chrome и safari указывают на сам select.
Если сделать select multiple, то все становится нормально, подскажите, пожалуйста, что здесь не правильно
Тестовый пример
<select id = "test">
	<option value = "1">номер один</option>
	<option value = "2">номер два</option>
	<option value = "3">номер три</option>
</select>

<select id = "test1" multiple style = "padding-bottom: 50px;">
	<option value = "1">номер один</option>
	<option value = "2">номер два</option>
	<option value = "3">номер три</option>
</select>

<script>
	function showNumber(val){
		alert(val);
	}
	
	document.getElementById("test").onclick = test;
	document.getElementById("test1").onclick = test;
	
	function test(e){
		var trg = function(event){
			return event.target || event.srcElement;
		}(e || window.event)
		
		if(trg === this){
			return false;
		}
		
		showNumber(trg.value);
	}
</script>

monolithed 06.04.2011 18:27

Цитата:

Сообщение от poorking
что здесь не правильно

вообще что за бредовая идея так извращаться над элементами списка?

<script type="text/javascript">
window.onload = function() {
    document.getElementById('select').onchange = function() {
        alert(this.options[this.selectedIndex].index);
    };
};
</script>

<select id="select">
    <option value="1">номер 0</option>
    <option value="2">номер 1</option>
    <option value="3">номер 2</option>
</select>

poorking 06.04.2011 18:34

Цитата:

Сообщение от monolithed
вообще что за бредовая идея?

Согласен, спасибо, без понятия

Плюс поставить не дают
"Страница по адресу javascript.ru says:
Вы должны оставить отзыв кому-то еще прежде чем сможете снова добавить его monolithed."

Кстати в вашем примере можно уж наверно написать просто
alert(this.selectedIndex);
вместо
alert(this.options[this.selectedIndex].index);


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