2014-12-05 42 views
10

checkbox旁边有selectpicker。我希望如果复选框被选中,selectpicker将被启用,如果未选中,selectpicker将被禁用。 我写这里面是不工作(Here is the fiddle):如何通过ickeck复选框启用/禁用bootstrap 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'); 
}); 

回答

25

您应该刷新selectpicker一旦换做

这里工作fiddle

代码刷新UI是

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

有关更多信息,请参阅DOCS

还有一个错误,我所发现的是,禁用您必须使用

attr('disabled',true) 

attr('disabled') 
+1

非常感谢! – user1896653 2014-12-05 14:08:08

+0

还有一个简单的启用/禁用示例[在文档中](http://silviomoreto.github.io/bootstrap-select/methods/#selectpickerrefresh)。 – Leith 2017-04-04 02:19:06

1

如果您选择选择器已经不仅仅是几个选项较多,目前公认的答案是令人难以置信的缓慢。 (可引起流连半秒,这是太长了,只是使一些禁用。)

这为我工作:

禁用:

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

启用:

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

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

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