2010-08-06 10 views
1

J'ai un formulaire où il y a un groupe d'options avec le choix d'entrer une valeur en livres ou un pourcentage. Ensuite, j'ai une boîte de saisie pour la valeur réelle ou le pourcentage.jquery valider conditionnel max

Je souhaite utiliser les fonctions de validation de jquery pour définir une valeur maximale conditionnelle (par exemple, 100) si l'utilisateur choisit l'option de pourcentage.

Est-ce possible - j'ai essayé cela, mais il ne fonctionne pas:

sponsorValue: { 
    required: true, 
    digits: true, 
    max: function(element) { 
    if ($("#sponsorOption").val() == '2'){ return 100;} 
         } 
     } 

quelqu'un peut-il offrir de l'aide?

+0

Qu'est-ce que vous obtenez en résultat avec le code ci-dessus? –

+0

Les paramètres requis et les chiffres fonctionnent bien mais pas le maximum. utilisé le vérificateur d'erreurs JS Chrome et le code semble être bien formé, c'est-à-dire sans erreurs de syntaxe – Adam

Répondre

0

Voici comment les radios formulaire HTML sont marqués:

<input name="sponsorOption" type="radio" value="1" /> <span class="stdTxt">Amount</span><br /> 
<input checked="checked" name="sponsorOption" type="radio" value="2" checked="checked"/> <span class="stdTxt">Percentage</span> 

excuses pour ajouter ceci comme une réponse mon utilisateur n'a pas été mis en place hier.

+0

Je pense que je devrais peut-être faire le ids sponsorOption1 et sponsorOption2 – eggwater

+0

encore dénigrer à ce sujet. J'ai essayé beaucoup de variations différentes. Le problème semble être que lorsque l'option radio est modifiée, elle ne met pas à jour la valeur du max. J'ai essayé de simplement changer les valeurs des boutons radio pour correspondre aux seuils requis - par ex. 100: 20000 et utilisez simplement la valeur du max comme $ ("input [name = 'sponsorOption']: checked"). Val() - cela ne fonctionnait pas non plus il prend simplement la valeur par défaut 'checked' par défaut. très frustrant cela. – eggwater

3

Je pense que je l'ai craqué:

sponsorValue: { 
    required: true, 
    digits: true, 
    max: function(value,element) { 
     if ($("input[name='sponsorOption']:checked").val() == '2') return 100; 
       } 
    } 

J'ai utilisé une seule case au lieu des radios à la fin mais je peux essayer de refaire le test en utilisant les radios.

+0

Cela fonctionne aussi avec les radios - en fait cela fonctionne mieux - plus fonctionnel. – eggwater

+0

C'est exactement ce dont j'avais besoin. –