2013-03-06 2 views
0

Мой код jQuery не работает в IE 9, но хорошо работает в IE7, IE8, Chrome, FF.Keypress() не работает в IE 9

Это мой код:

$(document).keypress(function(){ 
     window.clearTimeout(); 
     window.setTimeout(function() { 
      //Do something... 
      return false; 
     }, 800); 
}); 
+0

Это может быть отсутствие ''. –

+0

В чем смысл вызова clearTimeout без тайм-аута? он не должен ничего делать в этом случае (и я подозреваю, что это ваша проблема) –

+0

Спасибо, но на моем сайте это не так :( –

ответ

1

Удалить window.clearTimeout() или дать ему параметр. IE9 incorrectly requires it.

$(document).keypress(function(){ 
    //window.clearTimeout(); 
    window.setTimeout(function() { 
     alert("Worky!"); 
     return false; 
    }, 800); 
}); 

http://jsfiddle.net/Hztuv/1/

или

var timeout; 
$(document).keypress(function(){ 
    window.clearTimeout(timeout); 
    timeout = window.setTimeout(function() { 
     alert("Worky!"); 
     return false; 
    }, 800); 
}); 
+0

Отлично! Спасибо за помощь! Мне не хватало 'timeout'. –

3

Попробуйте переключиться на KeyDown, которая отличается от компьютера, но должен достичь того же эффекта

Из учебника:

Для того, чтобы понять разницу между keydown и keypress, полезно понять разницу между «характером» и «ключом». «Ключ» - это физическая кнопка на клавиатуре компьютера, а «символ» - это символ, набранный нажатием кнопки. Теоретически события keydown и keyup представляют собой клавиши, которые нажаты или выпущены, в то время как событие нажатия клавиши представляет собой типизируемый символ. Реализация теории не одинакова во всех браузерах.

+0

Спасибо за ваш ответ, я попробовал, но он не работает. Я использую код jquery для того, чтобы повлиять, например, на поиск по поисковому запросу Google на домашней странице поиска. Когда я печатаю какие-либо слова, некоторые результаты показываются ниже. –