0
votes

Comment autoriser les alphabets uniquement pour un champ de texte, en validant sur l'événement "OnClick"? Veuillez me corriger ce que je fais mal avec mon script

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class="form-control" name="FullName" id="FullName" required>
$(document).ready(function() {
  $('#FullName').bind("cut copy paste drag drop", function(e) {
    e.preventDefault();
  });
});

function isNumberKey(evt) {
  var charCode = (evt.which) ? evt.which : evt.keyCode;
  if (charCode > 31 && (charCode < 48 || charCode > 57))
    return false;
  return true;
}


3 commentaires

Je ne comprends pas ce que ce code devrait faire, la fonction isnumberkey n'est jamais utilisée


Monsieur, ce code fonctionne réellement avec le numéro classé et restreint le clic lorsque quelqu'un entre dans l'alphabet. Maintenant je veux changer cette fonction pour l'alphabet


En outre, vous pouvez utiliser regex au lieu de charcodes


3 Réponses :


1
votes

Vous pouvez utiliser ceci: (sans écrire de fonction)

  <input type="text" name="onlyalphabet" onkeypress="return (event.charCode > 64 && event.charCode < 91) || (event.charCode > 96 && event.charCode < 123) || (event.charCode == 32)">


2 commentaires

Ce code fonctionne bien mais ne laisse pas d'espace entre le nom o.f johann le prend-il comme john doe.


J'ai mis à jour ma solution, maintenant elle acceptera également de l'espace :)



0
votes

D'après la description du problème, il semble que vous essayez de limiter la valeur saisie aux seuls caractères alphabétiques, ainsi qu'à . et aux espaces. En tant que tel, vous devez vous connecter à l'événement input de l'élément. De là, vous pouvez utiliser une expression régulière pour supprimer les caractères invalides. Essayez ceci:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class="form-control" name="FullName" id="FullName" required>
$(document).ready(function() {
  $('#FullName').on("input", function(e) {
    $(this).val((i, v) => v.replace(/[^a-z \.]/gi, ''));
  });
});

En passant, notez que bind () était obsolète il y a longtemps et ne devrait pas être utilisé. on () est maintenant la meilleure pratique.


2 commentaires

$ (this) .val ((i, v) => v.replace (/ [^ a-z \.] / gi, '')); dans cette ligne où "=>" il génère une erreur de syntaxe. Veuillez m'aider à cet égard.


Je suppose que vous utilisez IE si vous obtenez cette erreur. Dans ce cas, utilisez ceci: $ (this) .val (function (i, v) {return v.replace (/ [^ a-z \.] / Gi, '')});



0
votes

Sans espace

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class="form-control" name="FullName" id="FullName"  onkeypress="return isNumberKey(event);"  required>
$(document).ready(function() {
  $('#FullName').bind("cut copy paste drag drop", function(e) {
    e.preventDefault();
  });
});

function isNumberKey(evt) {
  var charCode = (evt.which) ? evt.which : evt.keyCode;
  if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 32)
    return true;
  return false;
}

Avec espace

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class="form-control" name="FullName" id="FullName"  onkeypress="return isNumberKey(event);"  required>
$(document).ready(function() {
  $('#FullName').bind("cut copy paste drag drop", function(e) {
    e.preventDefault();
  });
});

function isNumberKey(evt) {
  var charCode = (evt.which) ? evt.which : evt.keyCode;
  if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123))
    return true;
  return false;
}


0 commentaires