Javascript 引导选择器不会使用内置函数重置
我有一个引导选择器数组,用于从数据库筛选结果。我需要一种方法将所有选择器重置为“未选择”,这是我的代码: HTML 尝试重置所有选择器:Javascript 引导选择器不会使用内置函数重置,javascript,jquery,html,ajax,twitter-bootstrap,Javascript,Jquery,Html,Ajax,Twitter Bootstrap,我有一个引导选择器数组,用于从数据库筛选结果。我需要一种方法将所有选择器重置为“未选择”,这是我的代码: HTML 尝试重置所有选择器: $('#reset_filters').click(function() { $('.selectpicker').selectpicker('deselectAll'); $('.selectpicker').selectpicker('render'); $('.selectpicker').selectpicker('refres
$('#reset_filters').click(function() {
$('.selectpicker').selectpicker('deselectAll');
$('.selectpicker').selectpicker('render');
$('.selectpicker').selectpicker('refresh');
$(this).closest('form').find('.selectpicker').each(function() {
$(this).selectpicker('render');
});
});
.not('.divider') //prevents the divider receiving a click event!
.not('.disabled') //ignore any disabled elements
.filter('.selected') / .not('.selected') //depending if its selectAll() or deselectAll()
.filter(':visible') //prevent any non-visible element receiving a click event!?
正如你所看到的,我已经尝试了所有的函数重置,但是没有用,所以我显然在逻辑上犯了一些错误。因此我查看了selectpicker.js文件,
取消所有
和选择所有
函数都通过一些参数过滤各自的选项(参见第884行):
有点崩溃:
$('#reset_filters').click(function() {
$('.selectpicker').selectpicker('deselectAll');
$('.selectpicker').selectpicker('render');
$('.selectpicker').selectpicker('refresh');
$(this).closest('form').find('.selectpicker').each(function() {
$(this).selectpicker('render');
});
});
.not('.divider') //prevents the divider receiving a click event!
.not('.disabled') //ignore any disabled elements
.filter('.selected') / .not('.selected') //depending if its selectAll() or deselectAll()
.filter(':visible') //prevent any non-visible element receiving a click event!?
我的问题是.filter(':visible')
,当点击事件被触发时,列表不可见,因此这些选项被过滤掉,因此没有被“点击”/“取消选择”。
我修改了我的插件版本,现在我的“重置”按钮按预期工作。新的路线是:
this.$lis.not('.divider')。not('.disabled')。filter('.selected')。find('a')。click()代码>我从以下代码中获得了解决方案。请尝试
$("#listID").val('').trigger('change');
你也可以试试这个
$("#listID").val('').selectpicker('refresh');
也许有点晚了,但也许有一天它会帮助别人。对我来说,解决办法是:
$("#listID").val([]).selectpicker('refresh');
我有multiselect选项,您可以用它替换为空数组的选定项,否则您将选择值为空val(“”)的选项。今天尝试了“重置”代码段,取消了选择我的选择框。所以这个问题可能已经解决了。稍后再给别人留言。你才是真正的MVP。如果您查看silviomoreto的github(),您将看到他在过去几年中对代码进行了巨大的更改。v1.6.3->v1.12.2
$("#listID").val([]).selectpicker('refresh');