2010-03-16 7 views
0

Par défaut, Zend_Form crée un champ de saisie masqué pour chaque entrée de case à cocher dans le formulaire. Ces entrées partagent le même nom.Jquery Validation Nom du plugin Conflit avec Zend_Form

<input type="hidden" name="zend-cb" value=""> 
<input type="checkbox" name="zend-cb" id="zend-cb" value="1"> 

Je veux exiger la case à cocher, donc je mis en place la règle suivante dans mon plugin jquery validateur (http://bassistance.de/jquery-plugins/):

'zend-cb': { 
    required: true 
} 

Malheureusement, le plugin de validation Jquery valide toujours le champ caché au lieu de la case à cocher. Est-ce qu'il y a une façon que je peux avoir pour valider la case à cocher à la place? Je me rends compte que je pourrais changer mon Zend Decorator pour omettre le champ caché, mais j'aimerais trouver une solution javascript pure. sont nécessaires

Solution

Deux étapes pour contourner ce problème.

1) Ajouter ignore: "input [type = hidden]" en option à la méthode de validation.

$('#myForm').validate({ 
    ignore: "input[type=hidden]", 
    rules: { ... } 
} 

2) jquery.validate.js ouvertes et mettre à jour la méthode de FindByName d'utiliser le filtre ignorer. Rapport de bogue déposé par adamnfish sur le site du plugin jquery.

findByName does not honour ignore settings

findByName: function(name) { 
     // select by name and filter by form for performance over form.find("[name=...]") 
     var form = this.currentForm; 
     return $(document.getElementsByName(name)).not(this.settings.ignore).map(function(index, element) { 
      return element.form == form && element.name == name && element || null; 
     }); 
    }, 

Répondre

3

Vous pouvez utiliser l'option ignore du plugin de validation.

$("#yorform").validate({ 
    ... 
    ignore: "input[type=hidden]" 
}) 

Cela devrait par exemple arrêter le plug-in de validation des entrées cachées

Vérifiez la documentation pour plus d'informations

+0

wow solution facile. en quelque sorte j'ai raté cette option. j'apprécie énormément! – Chris

+0

En fait, cela ne semble pas résoudre complètement le problème. J'étudie un correctif intitulé "findByName n'honore pas les paramètres ignorer", trouvé ici: http://plugins.jquery.com/node/9234 – Chris

+1

Votre correctif en combinaison avec le correctif sur le rapport de bug semble résoudre le problème. Merci! – Chris

Questions connexes