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