Сообщение от Kolyaj
|
Если только отслеживать ещё и keyup. Один раз обработчик вызвали, пока не будет keyup, больше его не вызываем.
|
Да, я сам уже пробовал такой способ.
![](images/smilies/smile.gif)
Вот только проверил его лишь в 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 бессмысленным. Но почему это происходит? И можно ли как-нибудь решить эту проблему?
![](images/smilies/smile.gif)