2009-10-26 8 views
2

J'ai un formulaire, qui a environ 10 entrées de texte (utilisateur, adresse, email, etc;) et environ 50 entrées qui sont des entrées de quantité (les utilisateurs choisissent 2x de cet article , 5x de cet article).Javascript valider X nombre de champs dans un formulaire HTML

Maintenant j'ai hérité ce formulaire de quelqu'un d'autre (maintenant c'est mon devoir de le tenir à jour, quand le client le demande).

Je ne veux pas tout réécrire, mais je voudrais ajouter une validation pour les champs de quantité.

Maintenant, les champs de quantité sont toutes différentes choses nommées (b1, C55, d, 12)

Fondamentalement, je voudrais écrire un script (mais ne sais pas comment rechercher pour cela, ou arriver) Côté JS, cela ignorerait les balises que je connais (utilisateur, adresse, email etc;) mais vérifier si les autres sont des nombres (soit vide - non sélectionnés, soit 1-99)

+0

Pouvez-vous ajouter des références de script à l'une des bibliothèques JavaScript présentes? Par exemple, jQuery? –

+0

Quel serait le point de référence d'un js lib? Je n'en utilise pas pour ce formulaire. Mais si quelqu'un veut en utiliser un dans sa suggestion, je l'accueillerais volontiers. Cependant, je ne vois pas comment cela clarifiera ma question. – Jakub

+0

@Jakub: Je ne vous demandais pas de clarifier quoi que ce soit, je demandais simplement à ceux qui pourraient avoir une solution d'utiliser une bibliothèque particulière. –

Répondre

2

Appliquer un class aux éléments (mon code utilise une classe check) comme suit:

<input type="text" name="b1" class="check" />

et le code jQuery suivant, qui vérifie uniquement ces éléments avec la classe check.

$('#myformid').submit(function(){ 
    $(':input.check').each(function(){ 
     field = $(this); 
     valInt = parseInt(field.val()); // value as an integer 

     if (isNaN(valInt) || (valInt < 1 || valInt > 99)) // displays an error if the val is < 1 or > 99 
      alert('Error in the field ' + field.attr('name') + ': must be number from 1-99'); // change this to whatever you want the form to do if there's an error 
    }); 
}); 

Fondamentalement, ce que cela fait est le suivant: lorsque le formulaire est soumis, il passe par tous les domaines que vous souhaitez qu'il (noté :input.class pour attraper chaque champ avec la classe correcte) et vérifie si elle est (un) un nombre, et (b) inférieur à 1 ou supérieur à 99. S'il s'agit d'un nombre et est en dehors de la plage, il alerte l'utilisateur d'une erreur. Vous pouvez modifier la notification alert() pour la gestion des erreurs que vous souhaitez que votre formulaire ait.

+0

@Josh Leitzel: Cependant, si je ne veux pas définir chaque nom? J'ai plus de 50 entrées, et je ne me soucie pas de leur nom, je veux juste m'assurer qu'elles sont 1-99, ou vides. Comme ces valeurs changent sur une base hebdomadaire, je ne veux pas continuer à mettre à jour ce script. Donc jQuery aurait besoin de passer par tous les éléments de formulaire? Comment pourrais-je accomplir cela? Ce que j'imagine est en boucle comme un tableau, et ignore le 'connu' (email, premier, dernier, etc). Appologies si je n'étais pas trop clair. – Jakub

+0

Désolé à ce sujet. Vous pouvez utiliser une classe CSS pour accomplir facilement ce que vous aimeriez faire. J'ai édité ma réponse en conséquence. –

+0

ahh, intelligent. Je n'ai même pas pensé à classer par classe. Merci beaucoup! – Jakub

Questions connexes