Как стать автором
Обновить

Комментарии 12

А нельзя ли (китайский) код:
for (i in key) {
if (key[i] == «ctrl») {
res.ctrl = 1;
} else if (key[i] == «alt») {
res.alt = 1;
} else if (key[i] == «shift») {
res.shift = 1;
} else if (key[i] == «meta») {
res.meta = 1;

заменить на:
var keys = {'alt':1, 'shift':1, 'meta':1};
for (i in key) {
res[key[i]] = keys[key[i]];

???

И поправьте ошибки: клавиш(Ь) и .bind при описании .unbind.
ошибки исправил, спасибо.
по поводу исправления кода — не согласен что это будет верно. так объект res будет содержать ненужных членов.
я бы, все же, сделал массивы модификаторов («ctrl», «shift»…) и кнопок («down»: 40, «up»: 38, …) и пробегался по ним циклами, а затем отдельно проверка на буквы/числа. уж больно этот код глаз режет :)

кстати, насчет последней проверки:
if ((key[i].length == 2 || key[i].length == 3) && key[i].match(/[0-9]{2,3}/))
это зачем? «shift+23» как нажать?

ps: и, если уж заботиться об оптимизации, наверное, лучше написать так:
if ((key[i].length == 2 || key[i].length == 3) && !isNaN(key[i]*1))
хотя, это мелочи, конечно :)
спасибо, так я и сделаю, крутилось в голове что-то, а Вы все по полочкам положили )

shift+23 конечно сложно нажать, зато можно shift+37 или shift+109 можно. я не делал расшифровку например F1, символа у нее нет, прийдется кейкод писать

и Ваш вариант без регулярки мне нравится )
>shift+23 конечно сложно нажать
либо лыжи не едут, либо я не внимательно читал Ваш код :)
на моей и большинстве других клавиатур нажать shift+23 невозможно, по той причине, что нет клавиши «23», отсюда и возник мой вопрос.

если (еще раз, простите за невнимательность) Ваш код при указании правила «shift+23» сбработает при нажатии «shift+2+3», по-моему, это некорректное поведение — он сработать не должен.
>я не делал расшифровку например F1
ой…
<habr-sql>delete from comments where id = 1971098;</habr-sql>
млин, народ, челоек полезную фичу сделал, а вы в код лезете :/
в данном случае код — часть статьи.
решение, предлагаемое автором, не является «standalone», т.е. прямым его применением может быть только включение в свой проект. согласитесь, код, включаемый в проект нужно подвергать хотя бы беглому обзору, если это не .net или другие общеиспользуемые библиотеки.

кроме того, критика по-моему, достаточно конструктивная, разве нет?
да-да, спасибо за критику ) это помогает делать мир лучше )
> я не делал расшифровку например F1

Вот в этом направлении и следует далее работать.
спасибо, но смею заметить, что это плагин к jQuery. Если его он не используется, то…
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.