Показать сообщение отдельно
  #3 (permalink)  
Старый 14.07.2010, 21:18
Интересующийся
Отправить личное сообщение для MazenRat Посмотреть профиль Найти все сообщения от MazenRat
 
Регистрация: 17.07.2009
Сообщений: 14

Сообщение от Kolyaj Посмотреть сообщение
Если только отслеживать ещё и keyup. Один раз обработчик вызвали, пока не будет keyup, больше его не вызываем.
Да, я сам уже пробовал такой способ. Вот только проверил его лишь в Opera 10.60, а в остальных браузерах посмотреть поленился, когда получил в этой букве O отрицательный результат. А зря.

Вообщем, этот код работает во всех браузерах, перечисленных мной в первом посте, исключая новую Opera:

<!-- Подключаем библиотеку jQuery: -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type='text/javascript'>
$( document ).ready(
    function(){
        // Переменная-флажок: true - keyup() сработал,
        // false - еще нет:
        *!*var flag = true;*/!*

        $( document ).keydown(
            function( e ){
                if( e.keyCode == 84 *!*&& flag*/!* ){
                    // Если была прижата клавиша "t":
                    $( "#test" ).html( 'keydown сработал! ' + Math.random() );
                    *!*flag = false;*/!*
                }
            }
        );
        $( document ).keyup(
            function( e ){
                if( e.keyCode == 84 ){
                    // Если была отжата клавиша "t":
                    $( "#test2" ).html( 'keyup сработал! ' + Math.random() );
                    *!*flag = true;*/!*
                }
            }
        );
    }
);
</script>
<div id = "test" style = "color: red"></div>
<div id = "test2" style = "color: blue"></div>


Моя Opera 10.60 (под linux) в этом примере делает "залипание" как для события onkeydown(), так и для onkeyup(), что делает использование переменной flag бессмысленным. Но почему это происходит? И можно ли как-нибудь решить эту проблему?

Последний раз редактировалось MazenRat, 14.07.2010 в 21:26.
Ответить с цитированием