Код клавиши 46 JavaScript является Функциональной клавишей DEL или(.) знаком периода?

Я пишу некоторую логику в JavaScript с помощью jQuery, где я должен проверить входное содержание по шаблону REGEX исключая:

"^[a-zA-Z0-9_]*$"  //Alpha-numeric and _

Логика почти сделана, у меня просто есть немного проблемы при фильтрации функциональной клавиши DEL, моя логика идет как это:

var FunctionsKey = new Array(8, 9, 13, 16, 35, 36, 37, 39, 46);

function keypressValidation(key) {
            if (config.regexExp != null) {
                if ($.inArray(key, FunctionsKey) != -1) {
                    return true;
                }
                else {
                    var keyChar = String.fromCharCode(key);
                    return RegexCheck(keyChar);
                }
            }
            return true;
        }

Если KeyCode является одним из тех, которые в массиве, я позволяю ему передать, если не я получаю символ и сравниваю его с REGEX. Проблема: в некоторых Браузерах DEL и'.' (знак периода) имеют тот же код клавиши 46.

Так существует ли лучшая логика для фильтрации функциональных клавиш, или я должен записать условие для того случая, возможно, удалив 46 из массива и попытаться преобразовать ее для обугливания и если позволен, она переходит к функции Regex если не позволенный это передать? Другой вопрос будет в некоторых браузерах существуют ли более общие Коды клавиши?

Править: Моя привычка предложенного решения работает, потому что она не имеет значения, которые включают нажатого пользователя (DEL или период), я всегда добираюсь (.) как CHAR, по крайней мере, на OPERA и FF = (.

11
задан JOBG 18 May 2010 в 17:42
поделиться

1 ответ

110 - десятичный код клавиши, 46 - клавиша DEL.

Для развлечения: вставьте это, чтобы увидеть, во что вы попали! РЕДАКТИРОВАТЬ: добавлено целевое событие

   /* handle special key press */
$(document).ready(function() {
  function checkAKey(e) {
    var shouldBubble = true;
    switch (e.keyCode) {
      // user pressed the Tab 
      case 9:
        {
          alert("Tab hit, no bubble");
          shouldBubble = false;
          break;
        };
        // user pressed the Enter    
      case 13:
        {
          alert("Enter");
          break;
        };
        // user pressed the ESC
      case 27:
        {
          alert("Escape");
          break;
        };
    };
    /* this propogates the jQuery event if true */
    return shouldBubble;
  };

  $("*").keydown(function(e) {
    return checkAKey(e);

  });
});

ИЛИ

$(document).ready(function() {
  /* handle special key press */
  function checkFieldKey(e, me) {
    var shouldBubble = true;
    switch (e.keyCode) {
      // user pressed the Enter
      case 13:
        {
          $(me).blur();
          $("#somewhereElse").focus();
          shouldBubble = false;
          break;
        };
    };
    /* this propogates the jQuery event if true */
    return shouldBubble;
  };
  /* user pressed special keys while in Selector */
  $("#myField").keydown(function(e) {
    return checkFieldKey(e, $(this));
  });
});
10
ответ дан 3 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

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