web-dev-qa-db-fra.com

plug-in de validation jQuery: accepter uniquement les caractères alphabétiques?

J'aimerais utiliser le plug-in de validation de jQuery pour valider un champ qui accepte uniquement les caractères alphabétiques, mais il ne semble pas y avoir de règle définie pour ce champ. J'ai cherché sur Google mais je n'ai rien trouvé d'utile.

Des idées?

Apprécier ton aide.

15
KeyStroke

Si vous incluez le fichier de méthodes supplémentaire, voici le fichier actuel pour 1.7: http://ajax.Microsoft.com/ajax/jquery.validate/1.7/additional-methods.js

Vous pouvez utiliser la règle lettersonly :) Les méthodes supplémentaires font partie du fichier Zip que vous téléchargez, vous pouvez toujours trouver le dernier ici .

Voici un exemple:

$("form").validate({
  rules: {
    myField: { lettersonly: true }
  }
});

Il est à noter que chaque méthode supplémentaire est indépendante, vous pouvez l'inclure, placez-la avant votre appel .validate():

jQuery.validator.addMethod("lettersonly", function(value, element) {
  return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please"); 
77
Nick Craver

Faites attention,

jQuery.validator.addMethod("lettersonly", function(value, element) 
{
return this.optional(element) || /^[a-z," "]+$/i.test(value);
}, "Letters and spaces only please"); 

[a-z, ""] en ajoutant la virgule et les guillemets, vous laissez des espaces, des virgules et des guillemets dans la zone de saisie.

Pour les espaces + texte, procédez comme suit:

jQuery.validator.addMethod("lettersonly", function(value, element) 
{
return this.optional(element) || /^[a-z ]+$/i.test(value);
}, "Letters and spaces only please");

[a-z] ceci autorise les espaces aussi bien que le texte.

.................................................. ..........................

de plus, le message "Lettres et espaces seulement, s'il vous plaît" n'est pas obligatoire, si vous avez déjà un message dans les messages: 

messages:{
        firstname:{
        required: "Enter your first name",
        minlength: jQuery.format("Enter at least (2) characters"),
        maxlength:jQuery.format("First name too long more than (80) characters"),
        lettersonly:jQuery.format("letters only mate")
        },

Adam

14
adam

Juste un petit ajout à la réponse de Nick (qui fonctionne très bien!):

Si vous souhaitez autoriser des espaces entre les lettres, par exemple, .__, vous pouvez limiter la saisie à des lettres en nom complet, mais vous devez également laisser de l’espace - répertoriez simplement l’espace par une virgule. Et de la même manière si vous devez autoriser un autre caractère spécifique:

jQuery.validator.addMethod("lettersonly", function(value, element) 
{
return this.optional(element) || /^[a-z," "]+$/i.test(value);
}, "Letters and spaces only please");       
4
Steer360

Les réponses de Nick et Adam fonctionnent très bien. 

J'aimerais ajouter une note si vous souhaitez autoriser les caractères latins comme á et ç comme je le voulais

jQuery.validator.addMethod('lettersonly', function(value, element) {
    return this.optional(element) || /^[a-z áãâäàéêëèíîïìóõôöòúûüùçñ]+$/i.test(value);
}, "Letters and spaces only please");
2
FlavioEscobar

pour permettre des lettres et des espaces 

jQuery.validator.addMethod("lettersonly", function(value, element) {
return this.optional(element) || /^[a-z\s]+$/i.test(value);
}, "Only alphabetical characters");

$('#yourform').validate({
        rules: {
            name_field: {
                lettersonly: true
            }
        }
    });
 $('.AlphabetsOnly').keypress(function (e) {
        var regex = new RegExp(/^[a-zA-Z\s]+$/);
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        else {
            e.preventDefault();
            return false;
        }
    });
0
Anup Shetty