Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отличить клик по нераскрытому select'у от клика по раскрытому (https://javascript.ru/forum/events/42204-otlichit-klik-po-neraskrytomu-select%27u-ot-klika-po-raskrytomu.html)

upvasil 16.10.2013 22:10

Отличить клик по нераскрытому select'у от клика по раскрытому
 
Всем доброго времени суток!

Требуется чтобы функция отрабатывала только при первом клике по селекту - когда он ещё свёрнут. При повторном клике, когда кликают уже по option'у - чтобы не отрабатывала. Если повесить функцию на клик - то отрабатывает в обоих случаях.
Подскажите как можно отличить эти две ситуации.

рони 16.10.2013 22:18

Цитата:

Сообщение от upvasil
Подскажите как можно отличить эти две ситуации.

а зачем?

upvasil 16.10.2013 22:28

Цитата:

а зачем?
Чтобы _gaq.push() отрабатывал только при клике на нераскрытый селект. А зачем так - без понятия, не мне это нужно

Deff 17.10.2013 02:36

upvasil,
По любому клику на sеlect - менять class к примеру на аctive - затем на без аctive
тогда sеlect.аctive - развернутый sеlect
Проще и типичней отслеживаеть: - есть ли наведение на option - отличным от selected

danik.js 17.10.2013 08:18

Скорее всего отличить невозможно. Так что забей.

upvasil 17.10.2013 17:12

Deff, спасибо.
Почему-то mousedown срабатывает только при окрытии селекта, при клике уже на option не срабатывает.

danik.js 17.10.2013 17:20

Список может запросто закрыться и без второго клика по селекту и вообще без какого либо клика. Как вы собрались этот момент отловить?

upvasil 19.10.2013 15:46

danik.js, например, с помощью onblur'а. В хроме это работает, но в ff - нет, при втором клике рядом с селектом событие не происходит почему-то...

danik.js 19.10.2013 16:20

Цитата:

Сообщение от upvasil
danik.js, например, с помощью onblur'а.

Селект может закрыться (без кликов) и при этом остаться в фокусе.
Думаю задача нерешаема. Если ошибки допустимы, то попытаться можно, но думаю это все напрасно будет.

BETEPAH 19.10.2013 17:35

Цитата:

Сообщение от upvasil
При повторном клике, когда кликают уже по option'у - чтобы не отрабатывала. Если повесить функцию на клик - то отрабатывает в обоих случаях.

А запретить всплытие - не вариант?
<!DOCTYPE HTML><html><head></head><body>
<div id="where">куда кликали: </div>
<select id="select">
	<option id="option1">odin</option>
	<option id="option2">dva</option>
</select>
<script>
document.getElementById('select').onclick = function() {
	document.getElementById('where').innerHTML += 'select, ';
}
document.getElementById('option1').onclick = function(event) {
	document.getElementById('where').innerHTML += 'option1, ';
	event.stopPropagation ? event.stopPropagation() : event.cancelBubble=true;
}
document.getElementById('option2').onclick = function(event) {
	document.getElementById('where').innerHTML += 'option2, ';
}
</script>
</body></html>


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