如何通过ickeck复选框启用/禁用bootstrap selectpicker

checkbox旁边有selectpicker 。 我想如果复选框被选中,selectpicker将被启用,如果未选中,则selectpicker将被禁用。 我写了这个不起作用( 这是小提琴 ):

 $('.checkBox').on('ifChecked', function(event) { $(this).parents('.clearfix').find('.selectpicker').removeAttr('disabled'); }); $('.checkBox').on('ifUnchecked', function(event) { $(this).parents('.clearfix').find('.selectpicker').attr('disabled'); }); 

更改完成后,您应该刷新selectpicker

这是一个工作小提琴

用于刷新UI的代码是

 $('.selectpicker').selectpicker('refresh'); 

有关更多信息,请参阅DOCS

我发现的另一个错误是禁用你必须使用

 attr('disabled',true) 

 attr('disabled') 

如果您的选择选择器不仅仅有几个选项,那么当前接受的答案非常慢。 (可能导致挂起半秒钟,这太长时间不能让某些东西被禁用。)

这对我有用:

禁用:

 $("#yourSelect").prop("disabled", true); $(".selectpicker[data-id='yourSelect']").addClass("disabled"); 

启用:

 $("#yourSelect").prop("disabled", false); $(".selectpicker[data-id='yourSelect']").removeClass("disabled"); 

这也有额外的好处,实际显示选择的值是什么时候被禁用。 (这是选择框的行为)

我有点惊讶官方文档建议使用refresh只是为了禁用它,它需要太长时间。