Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отключить автоповтор для onkeydown\onkeypress (https://javascript.ru/forum/misc/35064-otklyuchit-avtopovtor-dlya-onkeydown%5Conkeypress.html)

drenadan 29.01.2013 19:18

Отключить автоповтор для onkeydown\onkeypress
 
Доброго времени суток, ява-гуру.

Мои познания в яваскрипте еще ничтожно малы, прошу Вас о помощи.

Есть следующая функция по нажатию клавиши:
if(e.keyCode==119)  //"W" - press
{
var last_id = new XMLHttpRequest(); // Новый запрос
        last_id.open('post', 'php/4.php', true) // post, куда, true
        last_id.setRequestHeader('Contewt-Type', 'application/x-www-form-urlencoded'); 
        last_id.send("m")
}


По нажатию на клавишу "W" функция методом пост записывает данные в БД, все работает, все хорошо .... но столкнулся с проблемой авто-повторения во время зажатия клавиши, так как MySQL висит на перепиленном роутере с юниксом на борту, железяка загинается от непрерывного обращения к базе :( ... для нормальной работы будет достаточно одной записи по событию нажатия и одно по отжатию ...

Прошу помощи в игнорировании или отключении автоповтора функции во время зажатия клавиши, если это возможно.

Заранее очень признателен.

danik.js 29.01.2013 20:44

keydown, keypress зацикливаются если удерживать кнопку, а вот keyup происходит один раз - при отпускании кнопки. Так что либо использовать keyup для выполнения запроса (если это подойдет), либо завести флаг, проверять его по keydown, если не установлен, устанавливать и выполнять действие, иначе игнорить. а по keyup сбрасывать флаг.

drenadan 30.01.2013 15:20

danik.js


Спасибо, с флагами все получилось !


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