2011-10-31 3 views
55

Comment valider les entrées cachées et les entrées de texte non visibles avec le plugin jQuery Form Validation? Le problème est que j'utilise le plugin fonction de suggestion automatique, ce qui génère une entrée cachée pour les éléments sélectionnésPlugin jQuery Validation - Valider les entrées cachées et non visible?

<input id="hiddenInput" type="hidden" name="something" value="1" /> 

J'ai 2 entrées comme celui-ci (les deux permettent seulement 1 point), que je veux validez et affichez l'erreur dans le parent <td>. C'est ce que j'ai obtenu jusqu'ici, mais il n'affiche pas l'erreur ou ne soumet pas un formulaire, si la valeur est réellement un nombre.

$("#form1").validate({ 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
     }) 
+0

Vous devriez envisager de choisir l'un des postes en tant que réponse. –

+1

Voir aussi http://stackoverflow.com/questions/8466643/jquery-validate-enable-validation-for-hidden-fields. – goodeye

Répondre

112

Pour permettre Validation des éléments cachés, remplacer l'ignorer et le définir comme chaîne vide:

$("#form1").validate({ 
    ignore: "", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 
+4

cette réponse est-elle toujours valable? Tout paramètre "ignorer" J'utilise le formulaire est envoyé même s'il n'est pas valide. J'ai essayé d'ignorer: [], ignore: "", ignore: ': hidden: not (#id_myimput). Toujours le même résultat: je vois l'avis d'erreur sur les champs, mais le formulaire est quand même soumis. La suppression de tout paramètre "ignorer" corrige la validation. – bluantinoo

+0

Avez-vous essayé cela? parce que cela donne une erreur quand j'utilise ignorer: "". 'Uncaught TypeError: Impossible de lire la propriété 'settings' de undefined' –

23

Vous pouvez utiliser l'option ignore comme ceci:

$("#form1").validate({ 
    ignore: "input[type='text']:hidden", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 

Option Valeur par défaut de ignore est :hidden qui ignore tous les champs cachés et les champs non visibles (display: none etc.)

+2

Ne valide toujours pas. J'ajoute une règle à une entrée cachée et m'assure qu'elle n'est pas valide, mais elle soumet toujours le formulaire et aucune erreur n'est affichée! – ItsGreg

+0

@EmreErkan Le lien vers la documentation est désormais affiché. –

12

Si les autres réponses ne fonctionnent pas pour vous, essayez ceci à la place. Il supprime tous les ignores pour la forme, il serait tout valider, y compris les champs cachés:

$.data($('form')[0], 'validator').settings.ignore = ""; 

Pour restaurer les paramètres d'ignorer les champs cachés, utilisez quelque chose comme ceci:

$.data($('form')[0], 'validator').settings.ignore = "input[type='text']:hidden"; 

Vous pouvez également utiliser la ci-dessus pour lire la valeur actuelle.

+0

Je l'ai essayé et cela n'a pas fonctionné pour moi. Cela me donne 'TypeError: $ .data (...) est undefined', j'ai vérifié' $ 'et c'est un objet jQuery correct. Voici une autre réponse http://stackoverflow.com/a/8565769/1027198. –

+3

Assez curieusement, votre solution est la * seule * qui a fonctionné pour moi - aucune des autres réponses ne l'a fait. – Nathan

3

Une autre façon de valider les entrées cachées est ceci:

$("#form1").validate({ 
     ignore: "not:hidden", 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
}); 
Questions connexes