Comment prévenir les caractères non valides à partir de la saisie dans les champs de saisie

Onkeydown, J'exécute le code JavaScript suivant:

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;
   }
}

L'un de ces trois attributs de titre est donné aux différents champs de saisie de la page. Le code fonctionne tellement bien que des caractères non valides sont correctement effacé, mais pas jusqu'à ce que le caractère suivant est entré. Je veux trouver un moyen d'interdire l'entrée non valide dans la première place. Je vous remercie de votre aide!

Modifier: je crée les événements à l'échelle mondiale. Voici comment j'ai procéder:

      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() est exécuté body.onload

Par conséquent, un type de champ de saisie HTML, sans appels de fonction comme ceci:

          <input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/>
ajouter cette fonction à la fois OnKeyPress et OnKeyUp
Rappelez-vous juste que ce genre de validation n'est pas assez et vous avez toujours supprimer ce chars côté serveur.
l'ajout de Onkeyup donne un arrière-à la recherche de l'effet. (Onkeypress fait la même chose). Ce que je veux faire, c'est refuser l'entrée de leur apparition.

OriginalL'auteur Mike | 2011-11-26