12
votes

JQuery Validator - Vérifiez l'apport sur une liste des valeurs acceptées

Je voudrais normalement faire cela avec une liste déroulante, mais le client a demandé qu'il s'agisse d'une entrée de texte ...

Fondamentalement, j'aimerais utiliser JQuery Validator pour vérifier qu'un utilisateur est entré dans 1 de 50 Abréviations valides sur l'état américain dans une zone de saisie de texte. Sinon, ils obtiendront une erreur. Je n'arrive pas à trouver une fonction qui fait cela. Toute aide est grandement appréciée!


0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser un modifier () Listener qui vérifie simplement l'entrée par rapport à votre liste d'entrée valide Strings et active uniquement les boutons Soumettre si vous avez une correspondance.

Quoi qu'il en soit. Pour une expérience utilisateur, il est préférable de montrer une liste de sélecteur déroulante de tous les états possibles. Au moins c'est ce que je pensais en premier, quand je repoussais votre question.

Cordialement,

chris


0 commentaires

0
votes

Voici une solution rapide sale:

http://jsfiddle.net/naveed_ahmad/cqxzu/1/


0 commentaires

19
votes

Voici une méthode de validation que vous pouvez ajouter pour une utilisation avec JQuery Validate < p> Vous déclarez d'abord un validateur: xxx

puis appliquez le validateur xxx

et dans votre formulaire que vous souhaitez ajouter la classe à l'élément de forme pour vérifier xxx

voici un Démo


10 commentaires

MCGRAILM, merci! C'est exactement ce que je cherche, mais je reçois cela dans ma console d'erreur Firefox: Erreur: States.Touppercase n'est pas une fonction.


Désolé que c'était supposé avoir une valeur ajoutée car la valeur est une chaîne qui doit être majuscule afin de vérifier que c'est dans le tableau, je pense qu'il est sensible à la casse


@Mcgrailm j'ai essayé jquery.validator.addmethod ("iState", fonction (valeur.touppercase ()) {var stats = ['PA', "CA"] // Bien sûr, vous devrez ajouter plus de retour $ .inarray (valeur, états);}, "données fournies n'est pas une sate valide"); - qui ne semble pas être correct. Avez-vous une idée de ce que je fais mal?


@paul j'ai oublié que Inarray retourne -1 au lieu de false, je devais changer le code pour travailler autour de cela


@Mcgrailm - Homme, merci, je ne peux pas comprendre pourquoi cela ne fonctionne pas! Mon formulaire est à: 173.45.237.55/QRF - Cela ressemble-t-il? J'ai mis votre exemple en haut à gauche comme "Tester le champ d'état valide ..."


@paul Vous devez mettre la méthode de validation dans le document $ (document) .Ready () avant d'appliquer le validateur


Au cas où il aide tout le monde ... voici la fonction exacte que j'ai fini par utiliser: jquery.validator.addmethod ("istate", fonction (valeur) {var stats = [ "AK", "AZ", " Ar "," ca "," CO "," CT "," DE "," DC "," FL "," GA "," HI "," ID "," IL ",", "," "," Ks "," Ky "," Me "," ME "," MT "," NE "," NV "," NH "," NJ "," NM "," NY "," NC "," ND "," Oh "," OK "," OU "," MD "," MA "," MI "," MN "," MS "," Pa "," Pa "," "Ri", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WY", "WY", "WY" ] var in_array = $ .inarray (valeur.touppercase (), états); si (in_array == -1) {retour false;} else {retour vrai;}} "Veuillez entrer un état américain valide");


Cette réponse m'a aidé à résoudre mon problème. Voici une variation de la syntaxe que j'ai fini par aller avec! jsfiddle.net/uhzy9/9 (Remarque: J'ai inversé la logique à avoir une liste noire de valeurs)


@RtPharry qu'avez-vous ajouté cela pour .substr (0, 2)?


@mcgrailm - Je validais un code postal britannique pour les calculs de coûts de livraison. Il contient plus de caractères après cela. Je voulais seulement les deux premiers personnages qui décrivent le district postal et me permettaient d'identifier si c'était dans les Highlands écossais. (Merci pour votre code d'origine BTW :)