Комментарии 59
я раньше наткнулся на проблему уловить событие cmd+s (на маке), как тут с этим?
честно, на Маке не проверял, в силу отсутствия оного. если есть желающие с этим помочь(хотя бы быть моими глазами) — буду рад.
а в чём была проблема?
а в чём была проблема?
Я сталкивался с тем, что у jQuery в keydown есть код
Этот код мешает нормально ловить сочетания клавиш с ctrl, но без cmd на Маке.
// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) if ( !event.metaKey && event.ctrlKey ) event.metaKey = event.ctrlKey;
Этот код мешает нормально ловить сочетания клавиш с ctrl, но без cmd на Маке.
shift+[space|(letters)|(n3-n6)|(fkeys)]
нажимаю shift+7 то же срабатывает
нажимаю shift+7 то же срабатывает
Мне кажется круто было сделать чтоб обрабатывались еще цифры, набранные на нумпаде (если это возможно, конечно).
возможно, обрабатывается. набор (numpad), или индекс nb[0-9].
Ну я тут даже про то, что может есть смысл обрабатывать их и в наборе (numbers)? Ведь это суть одно и то же для пользователя.
я думал про это и даже в предыдущем топике обсуждали…
все-же решили, что пусть разработчик сам решает, тем более можно сделать так:
все-же решили, что пусть разработчик сам решает, тем более можно сделать так:
$.keyboard('shift+[(numbers)|(numpad)]', fn)
но я принимаю и рассматриваю все аргументы «за» и «против»такс, таки добавил набор (allnum) с цифрами на цифровой панели. полный список наборов можно глянуть в вики на гуглокоде
Вообще классная штука, сразу видно человек старался.
Ранее не пользовался сокращениями так как не знал как толком обработать — теперь нужно придумать что то в своих работах.
Спасибо.
Ранее не пользовался сокращениями так как не знал как толком обработать — теперь нужно придумать что то в своих работах.
Спасибо.
хоть я и противник всяких билиотек, но идея отличная :) отсутствием гибкости ваш плагин страдать, похоже, не будет
Кстати, пока не посмотрел примеры в гуглокоде, не разобрался что к чему. Там намного лучше описано чем здесь
Большое спасибо, буду использовать.
[(letters)|(numbers)|space|(numpad)]
Нвесил событие на буквы, цифры, пробел и нумпад, и хочу ещё навесить точку с запятой, не подскажите как это сделать, а т оя мудрил-мудрил и чё-т отак и не понял :) Помогите плиз.
Нвесил событие на буквы, цифры, пробел и нумпад, и хочу ещё навесить точку с запятой, не подскажите как это сделать, а т оя мудрил-мудрил и чё-т отак и не понял :) Помогите плиз.
ой, стыдно признаться, я забыл добавить клавиши ;'[]. Так и думал, что что-то пропустил. Пока можно юзать их указывая соответствующие keyCode, но я щас добавлю индексы и залью новую версию.
Обновил, залил в репозитарии новую версию. Добавил недостающие индексы пунктуационных знаков + набор пунктуационных знаков. В вики на гуглокоде можно глянуть список всех индексов и список всех наборов
Вы сделали просто офигительный плагин, который сам по себе добавляет возможность в несколько раз без вреда для пользователя повысить скорость работы с веб-приложением. Есть некоторый минус в том, что нельзя stop propagation — «заглушить» хоткей для браузера (например, чтобы по Ctrl+F4 не закрывалась вкладка), но, блин, он вообще малозначим в сравнении с плюсами. Отличная работа, побольше бы таких программеров!
Возможно, я туплю, но за 5 минут не нашел человеческой ссылки для скачивания самой либы… :(
как отписаться от события?
в предыдущей теме был пример:
Тем не менее, в планах поменять интерфейс на
Пока можно использовать первый вариант (и, вроде, второй тоже сработает). Совместимость сохранится с помощью настройки в глобальном и/или локальном конфиге.
// Снимаем действие
$.keyboard('ctrl alt');
Тем не менее, в планах поменять интерфейс на
$.keyboard('ctrl alt', null);
Пока можно использовать первый вариант (и, вроде, второй тоже сработает). Совместимость сохранится с помощью настройки в глобальном и/или локальном конфиге.
спасибо :)
Исходя из сказанного, получается, что на одно сочетание можно подписаться только один раз, правильно я понял? В то же время это противоречит механизму событий. Мне может понадобиться в разных местах программы подписаться на определенное сочетание и в какой-то момент отписаться от конкретных, не затрагивая при этом другие подписки и функционал.
Это хорошо реализовано jQuery для всех событий, с которыми работает библиотека. Отписаться можно передав как параметр обработчик, на который вы до этого подписывались:
unbind( [type], [fn] )
Доработаете ли вы функционал для более качественной работы на событийном уровне?
Это хорошо реализовано jQuery для всех событий, с которыми работает библиотека. Отписаться можно передав как параметр обработчик, на который вы до этого подписывались:
unbind( [type], [fn] )
Доработаете ли вы функционал для более качественной работы на событийном уровне?
Не сомневайтесь, там всё реализовано вполне прилично =) Я выше просто примеры приводил. А
Следующее будет работать вполне предсказуемо и радующе:
$.keyboard();
равносильно $(document).keyboard();
Следующее будет работать вполне предсказуемо и радующе:
$('textarea.first' ).keyboard('ctrl enter', sendMsgFirst );
$('textarea.second').keyboard('ctrl enter', sendMsgSecond);
$('textarea.first' ).keyboard('ctrl enter', null);
$('textarea.second').keyboard('ctrl enter', null);
Взгляните на мой пример (обратите внимание на одинаковый selector):
$('textarea').keyboard('ctrl enter', sendMsg);
$('textarea').keyboard('ctrl shift enter', clearInputBox);
Как отписаться от обработчика «sendMsg»? :)
$('textarea').keyboard('ctrl enter', sendMsg);
$('textarea').keyboard('ctrl shift enter', clearInputBox);
Как отписаться от обработчика «sendMsg»? :)
что на счёт
$('textarea').keyboard('ctrl enter', null);
?И от какого обработчика я при этом отпишусь? От «sendMsg» или от «clearInputBox»?
от sendMsg, наверное =)
Я хочу только от «sendMsg». Это возможно? :)
Простите, это был незначительный баг
После правки всё будет работать правильно и вполне ожидаемо:
сегодня внесу изменения в репозитарии на гуглокоде.
// Строка 271
if (bind.cfg.event == e.originalEvent.type) {
// Заменить на
if (bind && bind.cfg.event == e.originalEvent.type) {
// Строка 308
if (args.keys.isDelete) {
// Заменить на
if (args.isDelete) {
После правки всё будет работать правильно и вполне ожидаемо:
var elem = $('textarea');
elem.keyboard('z+x' , function () { alert (1); } );
elem.keyboard('z+x+c', function () { alert (2); } );
elem.keyboard('z+x');
сегодня внесу изменения в репозитарии на гуглокоде.
Простите, но мы, кажется, до сих пор друг руга не поняли :)
Я хотел бы иметь возможность отписываться от _конкретного_ обработчика. При этом все остальные обработчики должны продолжать корректно работать.
Резюмируя:
— иметь возможность подписывать любое кол-во обработчиков на одно и то же клавиатурное сокращение для одного и того же елемента;
— иметь возможность отписать любой и подписанных обработчиков, не затрагивая остальные;
Это то, как работают событийные механизмы в jQuery. Если вам нужно больше деталей мы можем обсудить это в скайпе (мой: Mezzario).
Я хотел бы иметь возможность отписываться от _конкретного_ обработчика. При этом все остальные обработчики должны продолжать корректно работать.
Резюмируя:
— иметь возможность подписывать любое кол-во обработчиков на одно и то же клавиатурное сокращение для одного и того же елемента;
— иметь возможность отписать любой и подписанных обработчиков, не затрагивая остальные;
Это то, как работают событийные механизмы в jQuery. Если вам нужно больше деталей мы можем обсудить это в скайпе (мой: Mezzario).
К тому же подписываться обычно придется на документ (по причине того, что большинство элементов HTML не могут иметь фокуса) и тогда отписаться от конкретных обработчиков не получится.
Все эти наблюдения я описываю после использования вашего плагина на реальном проекте, так что не думайте, что я просто придираюсь :)
Все эти наблюдения я описываю после использования вашего плагина на реальном проекте, так что не думайте, что я просто придираюсь :)
а не подскажите как, например, при нажатии на Alt+F перейти на другую ссылку?
Объясните, пожалуйста, какой смысл привешивать нажатие клавиш к чему-либо, кроме document? Я просто думал, что будет, к примеру, просто в функцию передаваться в качестве this текущий элемент, а оказалось что отлов нажатия ообще не срабатывает ни на чем кроме document.
А, можно смотреть event[0].tagName
Умнее способа не придумал =)
Умнее способа не придумал =)
а на какой объекте надо регистрировать нажатие? на том, на который наведен курсор? на том, в котором выделен текст?
Спасибо за полезный модуль!
Попробовал на маке сделать отправку сообщений с помощью ctrl+enter либо cmd+enter и обнаружил проблему — работает только одна из этих комбинаций. Может я неверно задал настройки?
Указывал как [cmd|ctrl]+enter.
Пробовал задавать отдельными вызовами — тоже не работает.
Подскажите, как правильно настроить.
Спасибо.
Попробовал на маке сделать отправку сообщений с помощью ctrl+enter либо cmd+enter и обнаружил проблему — работает только одна из этих комбинаций. Может я неверно задал настройки?
Указывал как [cmd|ctrl]+enter.
Пробовал задавать отдельными вызовами — тоже не работает.
Подскажите, как правильно настроить.
Спасибо.
НЛО прилетело и опубликовало эту надпись здесь
в хроме тоже не работает (
А мне не хватило .keypress, правда он там легко добавляется.
Спасибо за полезную библиотечку, уже пользуюсь.
Работает Ubuntu 10.10 Opera10.63 и FF3.6.12
Спасибо за полезную библиотечку, уже пользуюсь.
Работает Ubuntu 10.10 Opera10.63 и FF3.6.12
НЛО прилетело и опубликовало эту надпись здесь
Спасибо большое! Очень пригодилось! Тока у вас демо отвалилось.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
jQuery.keyboard v0.2.0