jQuery validate plugin: n'accepte que les lettres?
j'utilise le plugin de validation de http://bassistance.de/jquery-plugins/jquery-plugin-validation/
ce que j'essaie de trouver est un moyen de faire que certains de mes champs de formulaire acceptent seulement les lettres, pas de nombres, caractères spéciaux, etc...
une idée des gens ? Merci beaucoup.
8 réponses
il suffit d'ajouter un validateur personnalisé, et de l'utiliser comme ceci:
jQuery.validator.addMethod("accept", function(value, element, param) {
return value.match(new RegExp("." + param + "$"));
});
Seuls les nombres:
rules: {
field: { accept: "[0-9]+" }
}
seulement des lettres
rules: {
field: { accept: "[a-zA-Z]+" }
}
Un petit changement.
jQuery.validator.addMethod("accept", function(value, element, param) {
return value.match(new RegExp("^" + param + "$"));
});
parce que de cette façon il acceptait des expressions comme "#abc".
Utilisez le code ci-dessous dans votre script. ceci ajoutera une nouvelle clause à votre validateur.
$.validator.addMethod(
"alphabetsOnly",
function(value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
},
"Please check your input values again!!!."
);
$("#formElement").rules("add", {alphabetsOnly: "^[a-zA-Z'.\s]$" })
Essayez comme ceci:
var numbers = /[0-9]+/;
var SpCharacters = /^\s*[a-zA-Z0-9\s]+\s*$/;
if (!numbers.test(name) && !SpCharacters.test(name)) {
return [false, "Name should be alphabetical.", ""];
}
la méthode suivante pour ajouter un validateur personnalisé fonctionne bien, mais la validation se produit sur keyup, de sorte que l'erreur continue de surgir pendant que l'utilisateur tape le texte.
return value.match(new RegExp(""));
la méthode ci-dessous fonctionne très bien pour les Alphabets et les espaces, idéal pour les champs de nom.
jQuery.validator.addMethod("alphabetsAndSpacesOnly", function (value, element) { return this.optional(element) || /^[a-zA-Z\s]+$/.test(value); }); $("FieldId").rules("add", { alphabetsAndSpacesOnly: true, messages: { alphabetsAndSpacesOnly: "Please enter a valid name." } });
le plugin jQuery Validate a déjà une règle appelée lettersonly
dans le cadre d' additional-methods.js
le fichier, qui ressemble à ceci...
$.validator.addMethod( "lettersonly", function( value, element ) {
return this.optional( element ) || /^[a-z]+$/i.test( value );
}, "Letters only please" );
Ajouter un ca
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/additional-methods.js"></script>
rules:{
txtname:{required: true,
lettersonly:true
}
Essayez Ceci : ( il s'agit d'une validation personnalisée parfaite en utilisant jQuery validator )
$(function() {
$.validator.addMethod("alphabetsnspace", function(value, element) {
return this.optional(element) || /^[a-zA-Z ]*$/.test(value);
});
$("#add-employee").validate({
rules: {
employee_surname: {
required: true,
alphabetsnspace: true
},
employee_firstname: {
required: true,
alphabetsnspace: true
},
employee_othername: {
alphabetsnspace: true
},
father_name: {
required: true,
alphabetsnspace: true
},
mother_name: {
required: true,
alphabetsnspace: true
},
spouse_name: {
alphabetsnspace: true
},
ssn: {
number: true,
},
phone_no: {
number: true,
},
phone_no2: {
number: true,
},
passport: {
number: true,
},
driving_license: {
number: true,
},
email: {
email: true
}
},
messages:
{
"employee_surname":{
alphabetsnspace: "Please Enter Only Letters"
},
"employee_firstname":{
alphabetsnspace: "Please Enter Only Letters"
},
"employee_othername":{
alphabetsnspace: "Please Enter Only Letters"
},
"father_name":{
alphabetsnspace: "Please Enter Only Letters"
},
"mother_name":{
alphabetsnspace: "Please Enter Only Letters"
},
"spouse_name":{
alphabetsnspace: "Please Enter Only Letters"
},
}
});
});