web-dev-qa-db-fra.com

Comment activer / désactiver bootstrap selectpicker by ickeck checkbox

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');
});
21
user1896653

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')
44
Cerlin

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.

6
Skeets