Il y a selectpicker
à côté de checkbox
. Je veux que si la case est cochée, selectpicker sera activé, si décoché, selectpicker sera désactivé. J'ai écrit ceci qui ne fonctionnait pas ( Voici le violon ):
$('.checkBox').on('ifChecked', function(event) {
$(this).parents('.clearfix').find('.selectpicker').removeAttr('disabled');
});
$('.checkBox').on('ifUnchecked', function(event) {
$(this).parents('.clearfix').find('.selectpicker').attr('disabled');
});
Vous devez actualiser le sélecteur une fois le changement effectué
voici un travail violon
Le code pour actualiser l'interface utilisateur est
$('.selectpicker').selectpicker('refresh');
pour plus d'informations, reportez-vous à la documentation
Une autre erreur que j'ai trouvée est, pour désactiver, vous devez utiliser
attr('disabled',true)
ne pas
attr('disabled')
Si votre sélecteur de sélection a plus que quelques options, la réponse actuellement acceptée est incroyablement lente. (peut provoquer un blocage d'environ une demi-seconde, ce qui est beaucoup trop long pour simplement désactiver quelque chose.)
Cela a fonctionné pour moi:
Désactiver:
$("#yourSelect").prop("disabled", true);
$(".selectpicker[data-id='yourSelect']").addClass("disabled");
Activer:
$("#yourSelect").prop("disabled", false);
$(".selectpicker[data-id='yourSelect']").removeClass("disabled");
Cela a également l'avantage supplémentaire de montrer réellement quelle était la valeur de la sélection lorsqu'elle était désactivée. (qui est le comportement des cases de sélection)
Je suis un peu surpris que la documentation officielle suggère d'utiliser refresh
juste pour le désactiver, cela prend beaucoup trop de temps.