2016-02-15 1 views
1

J'ai une forme simplevalidation JQuery - règle personnalisée

<form role="form" id="my_form" class="form-horizontal"> 
    <label class="radio"> 
     <input type="radio" name="reason[]" id="reasonOne" value="1"> Something 
    </label> 
    <label class="radio"> 
     <input type="radio" name="reason[]" id="reasonTwo" value="2"> Something else 
    </label> 
    <label class="radio"> 
     <input type="radio" name="reason[]" id="reasonThree" value="Other"> Other 
    </label> 
    <input type="text" name="reason[]" placeholder="Please specify" id="other" class="form-control"> 
</form> 

La radio en bas contrôle une entrée de texte. Au départ, ce qui est caché, et je ne

$('input:radio[name="reason[]"]').change(
    function(){ 
     if ($(this).is(':checked') && $(this).val() == 'Other') { 
      $('#other').css("display", 'block'); 
     } else { 
      $('#other').css("display", 'none'); 
     } 
    } 
); 

Définition des règles pour les boutons radio est simple, il me faut juste pour se assurer un est sélectionné. J'ai quelques problèmes avec une règle personnalisée. Essentiellement, si reasonThree est sélectionné, je dois m'assurer qu'ils entrent quelque chose dans l'entrée de texte qui est à ce point affichée. En ce moment, j'essaie quelque chose comme ce qui suit. S'ils sélectionnent le dernier bouton radio, comment puis-je m'assurer qu'ils saisissent quelque chose dans la zone de texte s'ils sélectionnent le dernier bouton radio?

Merci

+0

Merci, si vous ajoutez comme réponse que je vais marquer correcte. –

Répondre

2

Il n'y a pas d'élément avec id [id='reasonFive']. Essayez de changer votre méthode personnalisée comme ceci: -

$.validator.addMethod("customRule",function(value,element){ 
    if($('#reasonThree').is(':checked')){ 
    return $('#other').val().trim().length>0; 
    }else{ 
    return true; 
    } 
},"Please input a reason"); 

Demo