2015-04-13 1 views
2

J'utilise l'exemple de Parsleythe documetation page site:Exemple de persil du site ne fonctionne pas?

sauvegarder une page sur mon disque dur avec le contenu folowing:

<form id="demo-form" data-parsley-validate> 
    <label for="question">Do you code? *</label> 
    <p> 
    <input type="radio" name="question1" value="true" required /> Yes 
    <input type="radio" name="question1" value="false" /> No 
    </p> 

    <label for="languages">If yes, in which language(s)?</label> 
    <input type="text" class="form-control" name="languages" data-parsley-conditionalrequired='["[name=\"question1\"]:checked", "yes"]' data-parsley-validate-if-empty data-parsley-success-class="" data-parsley-conditionalrequired-message="This value is required since you are a programmer!" /> 

    <label for="question">Do you eat dog food? *</label> 
    <p> 
    <input type="radio" name="question2" value="yes" required /> Yes 
    <input type="radio" name="question2" value="no" /> No 
    </p> 

    <label for="why">If no, why?</label> 
    <input type="text" class="form-control" name="why" data-parsley-conditionalrequired='["[name=\"question2\"]:checked", "no"]' data-parsley-validate-if-empty data-parsley-success-class="" data-parsley-conditionalrequired-message="This value is required since you do not eat dog food!" /> 

    <input type="submit" class="btn btn-default pull-right" /> 
</form> 

<script type="text/javascript"> 
    window.ParsleyConfig = { 
    validators: { 
     conditionalrequired: { 
     fn: function (value, requirements) { 
      // if requirements[0] value does not meet requirements[1] expectation, field is required 
      if (requirements[1] == $(requirements[0]).val() && '' == value) 
      return false; 

      return true; 
     }, 
     priority: 32 
     } 
    } 
    }; 
</script> 
<script type="text/javascript" src="http://parsleyjs.org/dist/parsley.js"></script> 

Mais les vaidators personnalisés ne semble pas travailler. Je veux dire, la logique du validateur personnalisé n'est pas respectée. "Si oui, dans quelle (s) langue (s)?" Je choisis Oui, et ne remplis pas la langue ...

Où est le problème?

Un violon est également disponible HERE

+1

Une erreur est survenue. Chemins brisés? JS erreurs? –

+0

Pas d'erreur, mais la logique n'est pas respectée. voir mes modifications. – serhio

Répondre

3

changement

'["[name=\"question1\"]:checked", "yes"]' 

dans

<input type="text" class="form-control" name="languages" data-parsley-conditionalrequired='["[name=\"question1\"]:checked", "yes"]' data-parsley-validate-if-empty data-parsley-success-class="" data-parsley-conditionalrequired-message="This value is required since you are a programmer!" /> 

à

'["[name=\"question1\"]:checked", "true"]' 

Vous devez utiliser le value plutôt que le texte dans

<input type="radio" name="question1" value="true" required /> Yes 

EDIT

par des commentaires, une alternative (et plus cohérente) solution est de changer l'entrée HTML value s :

<input type="radio" name="question1" value="yes" required /> Yes 
<input type="radio" name="question1" value="no" /> No 
+0

ouah, je l'ai trouvé moi-même, alors nous étions en parallèle ...! La deuxième condition fonctionne, parce que la bonne condition est définie "Oui/Non" comme valeurs! – serhio

+0

a ajouté un problème: https://github.com/guillaumepotier/Parsley.js/issues/886, je propose de remplacer value = "yes" plutôt que "value = 'true'";) – serhio

+0

'value = 'yes'' serait en fait mieux car il serait compatible avec le second exemple. – adamdc78