Pull to refresh

jQuery.keyboard v0.1.0

Reading time 2 min
Views 5.5K

У меня есть на примете как минимум два проекта, в которых понадобится активное управление с помощью клавиатуры. Поэтому, я сел и написал удобный и красивый плагин для jQuery, который выкладываю во всеобщий доступ под свободной лицензией LGPL.

Изначально я его писал практически без использования jQuery, но почти под конец разработки переписал всё, как плагин. Дело в том, что я активно использую этот фреймворк в своих проектах, потому мне так удобнее. Тем, кто обходится без jQuery я оставил свои предыдущие наработки, но их придётся подпилить напильником. Если кто-то сделает красиво, то, думаю, ему будут все благодарны.

Это мой первый плагин на jQuery, потому обоснованная критика приветствуется. Возможно, я что-то написал не так — принимаются исправления в виде патчей.

Примеры

$(document)
        .
keyboard('5', function () {
                
alert('5');
        })
        .
keyboard(['ctrl''alt'], function () {
                
alert('ctrl alt');
        })
        .
keyboard(['x''c''v'], function () {
                
alert('just xcv');
        }, 
true /* If only this keys are active */);

$(
'textarea').keyboard('ctrl enter'sendmsg);

// Снимаем действие
$(document).keyboard('ctrl alt');

По-моему, всё очень просто и очевидно.
В качестве третьего парамета принимается булево значение — single. Если передано 1(true), то будет проверка на то, не нажаты ли какие либо еще клавиши кроме необходимых. Например, выбрано «ctrl-enter». Пользователь зажимает «ctrl-alt-enter». При отсутствии этого параметра действие совершится, если параметр правдив — действие не совершится.
Если тип переданого параметра или элемента массива — number(но не string с числом), то он будет расценен, как event.keyCode
Записи «['key1', 'key2']» и «'key1 key2'» — равнозначны

Нерешённая проблема


1. Если пользователь держит нажатую клавишу(например, «shift»), то при нажатии на другие клавиши будет выполнятся действие, которое повешено на на эту клавишу (в данном случае на «shift»). Это обходится установкой третьего параметра в true, но надо будет придумать более красивое решение.

Ссылки

Проект на гуглокоде

Демо
Обсуждение следующей версии
В архиве, в исходниках, есть мои наработки без использования jQuery
Tags:
Hubs:
+131
Comments 82
Comments Comments 82

Articles