Utilisation addMethod en jQuery Valider plugin
Je veux valider une zone de texte à l'aide de jQuery Valider plugin personnalisé méthode de validation (addMethod) mais mon code ne fonctionne pas. Quelqu'un peut-il m'aider à trouver l'erreur? Je n'ai jamais utilisé personnalisé méthode de validation avant, donc c'est un peu difficile pour moi de trouver l'endroit où je suis allé mal dans ce code.
C'est mon code:
$(document).ready(function () {
jQuery.validator.setDefaults({
//where to display the error relative to the element
errorPlacement: function(error, element) {
error.appendTo(element.parent().find('div.myErrors'));
}
});
jQuery.validator.addMethod(
"selectnic"
function(value,element){
if(element.value == /^[0-9]{9}[vVxX]$/)
return false;
else return true;
},
"wrong nic number"
);
$('#basicDetails').validate({ //initialize the Plugin
rules: {
fname: {
required: true,
lettersonly: true,
},
lname: {
required: true,
lettersonly: true,
},
},
messages: {
fname: {
required:"Please enter your first name",
lettersonly: "Login format not valid",
},
lname: {
required:"Please enter your last name",
lettersonly: "Login format not valid",
},
},
submitHandler: function (form) {
alert('valid form submitted');
return false;
}
});
});
..code html ....
<form action="#" method="post" id="basicDetails" runat="server">
<table width="68%" border="0" cellpadding="6" cellspacing="6">
<tr>
<td> </td>
<td> First name </td>
<td>:</td>
<td><input type="text" name="fname" id="fname" class="textbox" placeholder="Required field"/><div class="myErrors"></div></td>
<td align="right"> Last name :</td>
<td><input type="text" name="lname" class="textbox" id="lname" placeholder="Required field"/><div class="myErrors"></div></td>
</tr>
<tr>
<td> </td>
<td width="147" > NIC no </td>
<td> : </td>
<td width="172"><input type="text" name="nic" id="nic" class="textbox" placeholder="Required field"/><div class="myErrors"></div></td>
<td width="167" align="right">Passport no :</td>
<td width="167" id="showPP"> <input type="text" name="passport" class="textbox" id="ppnu" placeholder="Required field"/></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td colspan="3"><input type="submit" name="submit" value="Submit "class="submit" id="submit" />
<input type="submit" name="reset" value="Reset "class="reset" />
</td>
</tr>
</table>
</form>
.....après la modification de mon code ....
$(document).ready(function () {
jQuery.validator.setDefaults({
//where to display the error relative to the element
errorPlacement: function(error, element) {
error.appendTo(element.parent().find('div.myErrors'));
}
});
jQuery.validator.addMethod("selectnic", function(value, element){
if (/^[0-9]{9}[vVxX]$/.test(value)) {
return false;
} else {
return true;
};
}, "wrong nic number");
$('#basicDetails').validate({ //initialize the Plugin
rules: {
fname: {
required: true,
lettersonly: true,
},
lname: {
required: true,
lettersonly: true,
},
nicnumber: {
//other rules,
selectnic: true //<- declare the rule someplace!
}
},
messages: {
fname: {
required:"Please enter your first name",
lettersonly: "Login format not valid",
},
lname: {
required:"Please enter your last name",
lettersonly: "Login format not valid",
},
},
submitHandler: function (form) { //for demo
alert('valid form submitted'); //for demo
return false; //for demo
}
});
});
Où est le code HTML pour le présent formulaire?
Je peux voir une erreur de syntaxe, vous avez manqué
Sparky code html est un peu long de les ajouter ici
Je n'ai pas dit d'ajouter tous de la balise HTML. Seulement ajouter de la les parties pertinentes du formulaire... l'ouverture/la fermeture
Sparky j'ai ajouté mon code
Je peux voir une erreur de syntaxe, vous avez manqué
,
après selectnic
. Aussi, quel est le point de la comparaison d'une chaîne à une regex?Sparky code html est un peu long de les ajouter ici
Je n'ai pas dit d'ajouter tous de la balise HTML. Seulement ajouter de la les parties pertinentes du formulaire... l'ouverture/la fermeture
form
balises et tous les input
éléments, y compris la button
.Sparky j'ai ajouté mon code
OriginalL'auteur Erandi | 2014-05-14
Vous devez vous connecter pour publier un commentaire.
Il y a trois questions différentes, comme indiqué par la progression des modifications ci-dessous.
1)
Vous avez oublié une virgule entre
selectnic
et lafunction(
.Aussi, essayez ce format plutôt que lors de l'utilisation de
regex
...MODIFIER: Cette réponse suppose que votre original
regex
et la logique sont tous les deux corrects. Votre logique renvoiefalse
lorsque leregex
est un match.false
signifie que la validation a échoué et vous verrez le message d'erreur.2) EDIT 2:
Après la création de nouvelles méthodes, vous avez également à utilisation. Je ne vois pas le
selectnic
règle/méthode utilisée n'importe où dans votre code.Exemple:
3) EDIT 3:
Et enfin, le po d'origine
true/false
de la logique en arrière. Il voulait PASSER la validation sur une regex match... par conséquent, les besoins dereturn true
.DÉMO: http://jsfiddle.net/DzvNr/
tout simplement en disant: "il n'a pas de travail" est incroyablement inutile pour tout le monde. Ce qui n'a pas de travail? Ce dépannage avez-vous effectuer? Quelles erreurs sont à montrer dans votre console? Êtes-vous sûr que regex est correcte? Est logique correcte? Votre fonction sera de retour
false
(ÉCHEC de validation) lorsque leregex
EST un match.Sparky regex est correct ici ce que je veux, c'est lorsque l'utilisateur d'entrer un NIC nombre, il vérifie si le numéro entré a '804567789V' format (9 numéros et dernière lettre peut être " x " ou "y") et en utilisant la normale plugin jQuery validation je ne peux pas faire cela, donc j'ai utilisé la coutume de validation de méthode, mais ici, après l'ajout de ce code que j'ai essayé, mais il n'affiche pas de message d'erreur
sérieusement? Je suppose que vous n'essayez pas. Il est dit "EXEMPLE", donc oui,
myFieldName
signifie que vous insert votre nom du champ.s'il vous plaît juste ralentir un peu dans l'avenir et de lire ce site des sections de la FAQ. Mon tout premier commentaire ci-dessus spécifiquement demandé de vous si le
true/false
de la logique en arrière et j'ai même fait des commentaires dans le code, expliquant qu'il serait un échec de validation lors de la regex de correspondance. De toute façon, content d'avoir pu aider.OriginalL'auteur Sparky