Связывание клавиш со стрелками в JS / jQuery

Да Оператор с запятой имеет низкий приоритет, чем оператор присваивания

#include<stdio.h>
int main()
{
          int i;
          i = (1,2,3);
          printf("i:%d\n",i);
          return 0;
}

Выход: i = 3 Потому что оператор запятой всегда возвращает самое правое значение. В случае оператора запятой с Оператором присваивания:

 int main()
{
      int i;
      i = 1,2,3;
      printf("i:%d\n",i);
      return 0;
}

Ouput: i = 1 Как известно, оператор с запятой имеет более низкий приоритет, чем присваивание .....

405
задан Stephen Ostermiller 26 July 2016 в 07:42
поделиться

4 ответа

Вы можете использовать keyCode клавиш со стрелками (37, 38, 39 и 40 для влево, вверх, вправо и вниз):

$('.selector').keydown(function (e) {
  var arrow = { left: 37, up: 38, right: 39, down: 40 };

  switch (e.which) {
    case arrow.left:
      //..
      break;
    case arrow.up:
      //..
      break;
    case arrow.right:
      //..
      break;
    case arrow.down:
      //..
      break;
  }
});

Посмотрите приведенный выше пример здесь .

104
ответ дан 22 November 2019 в 23:32
поделиться
$(document).keydown(function(e){
    if (e.which == 37) { 
       alert("left pressed");
       return false;
    }
});

Коды символов:

37 - слева

38 - вверх

39 - справа

40 - вниз

448
ответ дан 22 November 2019 в 23:32
поделиться

Вы уверены, что jQuery.HotKeys не поддерживает клавиши со стрелками? Я раньше играл с их демонстрацией и наблюдал левую, правую, верхнюю и нижнюю работу, когда тестировал ее в IE7, Firefox 3.5.2 и Google Chrome 2.0.172 ...

РЕДАКТИРОВАТЬ : Это похоже, что jquery.hotkeys был перемещен в Github: https://github.com/jeresig/jquery.hotkeys

9
ответ дан 22 November 2019 в 23:32
поделиться

Это немного поздно, но у HotKeys есть очень серьезная ошибка, из-за которой события запускаются несколько раз, если вы прикрепляете более одной горячей клавиши к элементу. Просто используйте простой jQuery.

$(element).keydown(function(ev) {
    if(ev.which == $.ui.keyCode.DOWN) {
        // your code
        ev.preventDefault();
    }
});
23
ответ дан 22 November 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: