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

jQuery.keyboard v0.1.0

Время на прочтение2 мин
Количество просмотров5.6K

У меня есть на примете как минимум два проекта, в которых понадобится активное управление с помощью клавиатуры. Поэтому, я сел и написал удобный и красивый плагин для 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
Теги:
Хабы:
Всего голосов 141: ↑136 и ↓5+131
Комментарии82

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань