РЕДАКТИРОВАТЬ 3: Я получил эту работу, игнорируя приведенный ниже совет и прислушиваясь к окну, но только когда поле input
, text
или textarea
не сфокусировано , Я не уверен, что это лучший способ решить эту проблему.
http://jsfiddle.net/gXPES/5/
РЕДАКТИРОВАТЬ 2: Я пытался решить проблему keydown
, применяя обработчики focus
и blur
к input
s. Тогда я слушаю только события, когда var focus_on_input == true
. Но, похоже, не все хорошо. Это предотвращает некоторые виды поведения, но вызывает другое, более странное поведение. Например, когда я tab выходит из поля ввода, нажатие J и K приведет к переходу в начало или конец списка. Если я click
в другом месте и сместить фокус, эта проблема исправлена. Есть мысли?
РЕДАКТИРОВАТЬ: Благодаря справочной системе я ограничил селекторы при прослушивании keydown
, чтобы я мог по-прежнему печатать символы в другом месте, но я столкнулся с новой проблемой. Когда я нажимаю J или K , стрелка перемещается вверх или вниз по списку задач. И когда я нажимаю C или # , он уведомляет меня, что никакие задачи не выбраны. X работает должным образом и не выбирает задачу.
Хостинг этот код в JSFiddle , так как здесь нет никакого способа прокомментировать его полностью. Я разместил все свои JS, CSS и HTML, используемые для самого интерфейса.
Я разрабатываю вдохновленный Gmail пользовательский интерфейс для управления задачами с использованием jQuery на внешнем интерфейсе (и PHP на внутреннем, хотя это в значительной степени не имеет к этому отношения).
Я все еще относительно новичок в разработке jQuery, и поэтому я понимаю, Я делаю некоторые вещи неправильно . До сих пор я просто не знал что именно я делаю неправильно или как это исправить . Я надеялся, что некоторые более опытные люди могут помочь мне (и, надеюсь, другим) понять, как реорганизовать код jQuery для приложения большего размера.
Для начала, вот несколько вещей, которые я хотел бы знать, как сделать лучше:
Вызывайте этот код только при активном интерфейсе задачи.
Улучшение прослушивания для события keydown
. В настоящее время я слушаю J , K , X , Shift + 3 и C . Я также буду прослушивать E для редактирования задач, но еще не внес изменения. Проблема со слушателями связана с моей первой проблемой, которая заключается в том, что они всегда включены . Это означает, что нажатие J в режиме <textarea>
, например, не приведет к поведению по умолчанию.
Используйте меньше HTML в моем коде.
Сделайте мой код обычно более СУХИМ.
Любые мысли, какими бы критическими они ни были, приветствуются. Опять же, я понимаю, что не следую лучшим практикам здесь, но это потому, что я туп к ним. Я хочу учиться и надеюсь использовать эту возможность для этого.
Ура!