web-dev-qa-db-fra.com

Validation JQuery - sélectionnez requis si la case est cochée

en utilisant jquery, je veux faire une sélection dans une case de sélection requise (c'est-à-dire qu'elle ne peut pas être laissée par défaut en blanc) si une case à cocher particulière est cochée. Mon code:

$(document).ready(function(){
  $("#myForm").validate({
    rules: {
      myDropDown: {
        required: {       
          depends: function(element) {
            return $("#myCheckbox:checked")
          }
        }
      }
    }
  })
})

Le html:

<input type="checkbox" name="myCheckbox" id="myCheckbox" value="1">
<select name="myDropDown" id="myDropDown">
  <option value="" selected></option>
  <option value="1">Choice 1</option>
  <option value="2">Choice 2</option>
  <option value="3">Choice 3</option>
</select>

Non seulement le code ne fonctionne pas, mais il jette les onglets jquery que j'ai comme section suivante de javascript.

Tout conseil apprécié.

Edit: Maintenant que j'ai trié tous mes crochets, le comportement est maintenant de faire de la case de sélection un champ obligatoire, que la case soit cochée ou non - c'est-à-dire que la partie dépend ne fonctionne pas. Autre javascript sur la page fonctionne maintenant bien.

30
Howard Shaw

Veuillez essayer comme ceci

$(document).ready(function(){
  $("#myForm").validate({
    rules: {
               myDropDown:{
                  required: function (element) {
                     if($("#myCheckbox").is(':checked')){
                         var e = document.getElementById("myDropDown");
                         return e.options[e.selectedIndex].value=="" ;                            
                     }
                     else
                     {
                         return false;
                     }  
                  }  
               }
           }
  });
});  
28
Mahesh KP

il devrait pouvoir fonctionner comme ça:

rules : {
 myDropDown:{required:"#myCheckbox:checked"}
}
37
elle

Ça fonctionne super bien

inputname:
{
    required: function(){
        if($("select[name=inputname]").val() == 1){
            return true;
        }
        else
        {
            return false;
        }
    }
}

Vous pouvez modifier le nom d'entrée à votre préférence.

Pour le changer en champ de saisie, vous pouvez changer la partie sélectionnée à saisir

8
Koen den Braven

Je ne sais pas quel plugin vous utilisez, mais

 return $("#myCheckbox:checked")

renvoie un objet Jquery si votre case est cochée. Je pense qu'il serait plus correct de le faire:

 return $("#myCheckbox").is(':checked')

qui renvoie vrai ou faux.

Peut-être que cela n'a rien à voir avec votre problème

0
Nicola Peluchetti