Как добавить символ в эту функцию проверки? - PullRequest
1 голос
/ 08 сентября 2010
$(function(){
    $('input[name="username"]').keydown(function(key){
        if (jQuery.inArray(key.keyCode, 
            [8,37,39,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90])
             == -1 || key.shiftKey ){
                return false;
        }
    });
});

То, что это делает, это проверка Ajax на текстовые символы, она позволяет мне вводить только буквы от a-z и 0-9, а не любые другие символы, но я хочу, чтобы разрешил мне символ _ (подчеркивание) а также.

Ответы [ 4 ]

3 голосов
/ 08 сентября 2010
$('input[name="username"]').keypress(function(event) {
  var k = event.which;
  /* 0:      non-input keys
     8:      backspace
     48-57:  0-9
     97-122: a-z
     95:     _ */
  if (k != 0 && k != 8 && k != 95 &&
      (k < 48 || k > 57) && (k < 97 || k > 122))
    return false;
});

$('input[name="username"]').keyup(function() {
  var inp = $(this).val();

  if (inp.match(/[^a-z0-9_]/g))
    $(this).val(inp.replace(/[^a-z0-9_]/g, ''));
});

Обработчик событий keypress пытается отловить недопустимые символы до того, как они введены в поле, чтобы предотвратить отвлекающий эффект «прыжка», когда отображаются недопустимые символыи на keyup снова удаляются.Обратите внимание, что event.which содержит код символа, нормализованный с помощью jQuery.

Обработчик keyup необходим для перехвата символов, которые вводятся с использованием Ctrl-V (обратите внимание, что он, к сожалению, не перехватывает ввод, используя пункт меню «Правка»> «Вставить».Дополнительный тест необходим для того, чтобы поле ввода не возвращалось в крайнее левое положение после каждого keyup (вызванного изменением его значения).Теперь он сбрасывает свою позицию только тогда, когда есть что удалить.

Вы можете проверить это на JSBin .

2 голосов
/ 08 сентября 2010

Немного более читаемый способ сделать это -

$('input[name="username"]').keydown(function() {
    $(this).val($(this).val().replace(/[^a-zA-Z0-9_]/g, ''));
});

Также обратите внимание, что проверка на событиях нажатия клавиш не помешает кому-либо скопировать / вставить любой текст с помощью мыши.

0 голосов
/ 08 сентября 2010

Добавить код 27 в массив?

0 голосов
/ 08 сентября 2010

Проверка для keyCode и shiftKey:

(key.shiftKey && key.keyCode == 109)

Как уже упоминалось, если вам нужна строгая проверка на стороне клиента, вам нужно сделать больше, чем просто обработать событие keydown.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...