Проверка поля с помощью JavaScript - onkeyup? - PullRequest
0 голосов
/ 05 марта 2012

У меня есть код, запускаемый нажатием клавиши ... Я хочу, чтобы он предупреждал всякий раз, когда набирается специальный символ.Помимо предупреждения, если пользователь введет специальный символ в поле, введенный специальный символ должен быть удален, а фокус должен вернуться к полю.Я не могу избавиться от этой проблемы.Вы можете мне помочь?заранее спасибо: D

function ei(e)
{
  var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
  for (var i = 0; i < e.value.length; i++) {
    if (iChars.indexOf(e.value.charAt(i)) != -1) {
      alert ("Please do not use special characters.");
      e.value = e.value-1;
      e.focus();
      return false;
    }
  }
}

это будет вызвано в текстовом поле .. как это

<input type="text" name="name" onkeyup="ei(this)">

Ответы [ 3 ]

2 голосов
/ 05 марта 2012

Здесь происходит несколько странных вещей.

  1. Вы не хотите использовать атрибуты onkeyup элементов HTML. Свяжите функцию прослушивания событий, которая сделает ваш код более модульным.
  2. Как уже говорили другие, вы не можете использовать такой оператор вычитания.
  3. Вы, вероятно, не хотите предупреждать каждый раз, когда кто-то вводит недопустимый символ. Это будет только раздражать и злить пользователя. Я просто регистрирую его на консоли, но вы должны подумать о том, чтобы поместить текст ошибки рядом с элементом ввода.

    $(function () {
      function ei(e) {
        var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
        for (var i = 0; i < this.value.length; i++) {
          if (iChars.indexOf(this.value.charAt(i)) != -1) {
            console.log("Please do not use special characters.");
            this.value = this.value.slice(0, this.value.length - 1);
            this.focus();
            return false;
          }
        }
      }
    
      $('#hurp').on('keyup', ei);
    });
    

И добавьте идентификатор к вашему элементу ввода:

<input type="text" name="name" id="hurp">​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

Смотрите это JSFiddle: http://jsfiddle.net/QgLcB/

1 голос
/ 05 марта 2012

Зачем вам беспокоиться об использовании события keyup? Было бы лучше использовать событие keydown или keypress и затем отменить его (я использовал этот сайт , чтобы найти коды клавиш):

function ei (event) {
    event = event || window.event;

    switch (event.keyCode) {
        case 47: //.
        case 33: //!
        //etc
            event.preventDefault(); //cancel the current action, which will stop it writing out to the textbox
            break;
        default:
            break;
    }
}

Я бы также посоветовал вам взглянуть на jQuery, а не на встроенный JavaScript для подключения ваших событий, а также взглянуть на плагин jQuery Validation , поскольку это должно помочь позаботиться о значительной части вашего кода.

1 голос
/ 05 марта 2012

e.value = e.value-1; не делает то, что вы думаете.

Вы, вероятно, хотите использовать substr ()

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