Bootstrap多选插件无法取消选择所有元素

3

我正在使用Bootstrap Multiselect 插件来处理我的select选项。当用户从一个select选项中选择了一个或多个选项,其他select选项中的所有元素都需要取消选择。我查看了文档寻找解决方案,但当我使用文档中的代码时,出现了错误:

bootstrap-multiselect.js:1042 (Uncaught TypeError: undefined is not a function)

有人知道问题出在哪里吗?

这是我的代码:

 $('#select1').multiselect({
        includeSelectAllOption: true,
        enableFiltering: true,
        onChange: function(element, checked) {
            //alert ("OK");//Alerts pop ups
            $('#select2').multiselect('deselectAll', false);
            $('#select2').multiselect('updateButtonText')

        }
    });

你在使用多选插件之前是否添加了jQuery和Bootstrap?你能展示一下你是如何添加脚本的吗?如果你的问题类似,这个链接可能会有所帮助:https://dev59.com/MF4d5IYBdhLWcg3wLf0g。 - Zee
@Sourabh-,当然了——否则就不会出现错误了。 - davidkonrad
1
代码运行良好,多选中没有错误 -> http://jsfiddle.net/0te0cjde/。将来,请提供标记,并最好也提供Fiddle或链接到网站,以便我们可以看到实际发生了什么。对上述问题的回答将是纯猜测。 - davidkonrad
2个回答

1
我尝试通过移除jQuery和bootstrap来重现您的问题。由于bootstrap实际上只是对其进行样式设置,因此您可以在没有它的情况下使用该插件(只是看起来很糟糕),并且不会引发任何错误。
移除jQuery将引发以下错误:
Uncaught TypeError: Cannot read property 'fn' of undefined
index.js:1 Uncaught ReferenceError: $ is not defined

我查看了最新版本的bootstrap-multiselect.js,第1402行是空白的,所以我不知道那个错误从哪里来。
第1401行是:
}(window.jQuery);

我的猜测是您正在使用旧版本的插件,尽管这可能不会导致问题。尝试更新插件,看看是否有所改善。

请注意,我在jQuery 2.1.3上使用了最新版本的bootstrap-multiselect,在Chrome v41 Mac OSX 10.10上进行了测试。


1
在插件的早期版本中,第1042行如下:
+1041            if (typeof option === 'string') {
+1042                data[option](parameter);

选项deselectAll被命名为deselectall,这会导致此行代码出错。如果您需要使用此版本的插件,只需将选项替换为deselectAll即可正常工作。但我强烈建议您更新到最新版本。

顺便说一下,在GitHub上的第一个版本已经将此功能命名为deselectAll,因此这个版本真的很旧,我找不到它以供参考。但我在我的工作场所也遇到了同样的问题,我们使用的版本可能与OP相同。

+823    /**
+824     * Deselects all options.
+825     * If justVisible is true or not specified, only visible options are deselected.
+826     * 
+827     * @param {Boolean} justVisible
+828     */
+829     deselectall: function (justVisible) {
 ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接