Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   чтобы select сразу реагировал на изменения (https://javascript.ru/forum/events/33592-chtoby-select-srazu-reagiroval-na-izmeneniya.html)

greenwar 28.11.2012 20:44

чтобы select сразу реагировал на изменения
 
что надо сделать?
onChange немного не то, он не реагирует на перелистывания клавиатурой
т.е., если мышкой выбрать что-то из меню, то ок, а если стрелками на клаве перелистывать, то не ок, надо ещё enter нажать

lord2kim 28.11.2012 20:58

greenwar, onkeydown, onkeypress, onkeyup

greenwar 28.11.2012 21:14

Цитата:

Сообщение от lord2kim (Сообщение 218518)
greenwar, onkeydown, onkeypress, onkeyup

onkeyXXX берут данные с предыдущего выбора, хотя выбраны уже следующие
т.е. они всегда отстают на 1

MalikSPB 28.11.2012 22:34

Цитата:

Сообщение от greenwar (Сообщение 218526)
onkeyXXX берут данные с предыдущего выбора, хотя выбраны уже следующие
т.е. они всегда отстают на 1

Тогда припиши им +1

greenwar 28.11.2012 22:51

Цитата:

Сообщение от MalikSPB (Сообщение 218543)
Тогда припиши им +1

ага :haha:
откуда я знаю, что до этого выбирали - СНИЗУ или СВЕРХУ

lord2kim 28.11.2012 22:52

Цитата:

Сообщение от greenwar (Сообщение 218526)
onkeyXXX берут данные с предыдущего выбора, хотя выбраны уже следующие
т.е. они всегда отстают на 1

<script>
window.onload = function() {
    document.getElementById("sel").onkeypress = function(e) {
        var e = e || event;
        if (e.keyCode == 38 || e.keyCode == 40) {
            alert(this.value);
        }
    }
}
</script>
<select id="sel" multiple size="5">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>


Цитата:

Сообщение от greenwar (Сообщение 218551)
ага :haha:
откуда я знаю, что до этого выбирали - СНИЗУ или СВЕРХУ

а какая разница знаешь ты или нет что выбрали? проверка существование предыдущего/следующего элемента

greenwar 29.11.2012 00:13

о, спасибо


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