2010-06-25 3 views
0

En essayant de configurer un formulaire où un utilisateur doit choisir une option d'un select ou entrer une valeur dans une entrée. Il faut être exigé mais pas les deux. Je tentais d'écrire un si d'autre déclarationjQuery, en essayant de valider un champ ou l'autre en fonction de ce qui est choisi

si l'état est sélectionné puis retirez la classe sur la province, si la province est ensuite remplie de supprimer la classe sur l'état

$("#state").bind('change' , function() { 
    if ($(this).is(':selected')) { 
      $(this).parents('.foreign').removeClass("required"); 
     } 
     else{ 
     $(#province).is(':filled'); 
     $(this).parents('.usa').removeClass("required"); 
      } 
}); 

Mais je sais que ce n'est pas comment faire il. J'espère que quelqu'un aura l'idée de ce que j'essaie. Merci d'avance! Fondamentalement, vous pouvez choisir ceci ou cela, mais pas les deux.

Répondre

1

Du haut de ma tête, essayez ceci:

<select id="state_province"> 
    <option value="state">State</option> 
    <option value="province">Province</option> 

$('#state_province').bind('change', function() { 
    if($('option:selected', this).val() == 'state') { 
     $('option[value=state]', this).show().addClass("required"); 
     $('option[value=province]', this).hide().removeClass("required"); 
    } else { 
     $('option[value=province]', this).show().addClass("required"); 
     $('option[value=state]', this).hide().removeClass("required"); 
    } 
}); 

Modifier en fonction de votre commentaire:

Ah, si vous voulez quelque chose comme: (désolé, je fais ceci de la mémoire, ainsi il peut y avoir des tweaks)

<select id="state" class="state_province"> 
... 
</select> 

<input type="text" id="province" class="state_province" /> 

===

$('.state_province').bind('change', function() { 
    var jThis = $(this); 
    if (jThis.is('select:selected')) { // state selected 
     jThis.addClass("required"); 
     $('input.state_province').removeClass("required"); 
     $(this).parents('.usa').addClass("required"); 
    } 
    if (jThis.is('input:filled')) { // province filled 
     jThis.addClass("required"); 
     $('select.state_province').removeClass("required"); 
     $(this).parents('.usa').removeClass("required"); 
    } 
}); 
+0

Ceci est une excellente solution; mais dans le scénario que j'utilise il est nécessaire que #state soit un menu de sélection de cinquante états et #province soit une entrée. Donc j'ai besoin de sélectionner l'un ou l'autre mais pas les deux. Je peux par défaut à votre idée si je ne peux pas travailler ceci. Merci encore! – CarterMan

+0

Alors, comment ferais-je cela si j'avais cinq cases à cocher et seulement un ou plusieurs d'entre eux doivent être vérifiés? – CarterMan