2016-03-29 2 views
0

Я использую событие jQuery keydown для обнаружения кодов клавиш, которые могут помочь предотвратить некоторые операции.jQuery 'KeyDown' Событие выпуск - Быстрый ввод

Существует один вход поле с классом «.donothack» вроде как ниже

<input name="hac" class="donothack" id="donothack" value="" /> 

И в JQuery код упоминается как ниже

$(".donothack").on("keydown", function(event) { 
    console.log(event.keyCode); 
    if(event.shiftKey && event.keyCode != 9 || event.keyCode != 9) { 
     //Stop operation 
    } 
} 

Теперь проблема в том, что когда кто-то типы слишком быстрые в этом поле ввода, тогда каждое событие в браузере повесили, и он должен вручную убить браузер или страницу через диспетчер задач компьютера.

Я тогда решил console.log, после чего я обнаружил, что события растут как угодно. Подсчет бесконечен, как показано на рисунке ниже. И я даже не знаю, что сколько раз я нажал клавиши :(

enter image description here

Просьба предложить решение?

+0

, что именно вы пытаетесь для достижения? Событие keydown запускается при каждом нажатии клавиши, и если вы выполняете некоторые дорогостоящие вычисления для каждого события, это будет медленным. – KWeiss

+0

Я проверяю код ключа, чтобы событие не было t запускается с использованием клавиши shift или tab. – Gags

+0

, когда пользователь быстро набирает скорость, тогда все мертво – Gags

ответ

0

Попробуйте

$(".donothack").unbind("keydown").on("keydown", function(event) { 
    console.log(event.keyCode); 
    if(event.shiftKey && event.keyCode != 9 || event.keyCode != 9) { 
     //Stop operation 
    } 
} 
+0

Нехорошее решение – Hacketo

+1

Да, в идеале должен переместить код из функции, которая вызывается несколько раз. –

+0

Приведите пример – Gags

Смежные вопросы