Как предотвратить ввод недопустимых символов в поля ввода

OnkeydownЯ запускаю следующий JavaScript:

function ThisOnKeyDown(el) {
   if (el.title == 'textonly') {
       !(/^[A-Za-zÑñ-\s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ-\s]/ig, '') : null;
   }
   if (el.title == 'numbersonly') {
       !(/^[0-9]*$/i).test(el.value) ? el.value = el.value.replace(/[^0-9]/ig, '') : null;
   }
   if (el.title == 'textandnumbers') {
       !(/^[A-Za-zÑñ0-9-\s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ0-9-\s]/ig, '') : null;
   }
}

Один из этих трех атрибутов заголовка присваивается различным полям ввода на странице. Код работает до тех пор, пока недопустимые символы удаляются правильно, но только после ввода следующего символа. Я хочу найти способ просто отрицать неправильный ввод в первую очередь. Я ценю вашу помощь!

редактировать: Я создаю события во всем мире. Вот как я это делаю:

      function Globalization() {
      var inputs = document.getElementsByTagName('input');
      for (i = 0; i < inputs.length; i++) {
          inputs[i].onfocus = createEventHandler(
              ThisOnFocus, inputs[i]);
          inputs[i].onblur = createEventHandler(
              ThisOnBlur, inputs[i]);
          inputs[i].onkeydown = createEventHandler(
              ThisOnKeyDown, inputs[i]);
          inputs[i].onkeyup = createEventHandler(
              ThisOnKeyUp, inputs[i]);
      }
  }

Globalization() работаетbody.onload

Поэтому типичное поле ввода имеет HTML без вызовов функций, например:

          <input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/>

Ответы на вопрос(6)

Ваш ответ на вопрос