Bootstrap 多选插件无法取消选中所有元素
Bootstrap Multiselect plugin fails to uncheck all elements
我正在使用 Bootstrap Multiselect plugin 作为我的 select 选项元素。当用户 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 来重现您的问题。因为所有 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);
我猜你使用的是旧版本的插件,尽管这可能不是导致问题的原因。尝试 updating the plugin 看看是否有任何效果。
请注意,我在 jQuery 2.1.3 上使用最新版本的 bootstrap-multiselect 在 Chrome v41 Mac OSX10.10
在旧版本的插件中,第 1042 行看起来像
+1041 if (typeof option === 'string') {
+1042 data[option](parameter);
并且选项 deselectAll
被命名为 deselectall
,这将导致此行出错。如果您需要使用此版本的插件,只需将选项替换为 deselectall
即可正常使用。但我强烈建议您更新到最新版本。
FWIW,这个插件的第一个版本在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) {
...
我正在使用 Bootstrap Multiselect plugin 作为我的 select 选项元素。当用户 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 来重现您的问题。因为所有 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);
我猜你使用的是旧版本的插件,尽管这可能不是导致问题的原因。尝试 updating the plugin 看看是否有任何效果。
请注意,我在 jQuery 2.1.3 上使用最新版本的 bootstrap-multiselect 在 Chrome v41 Mac OSX10.10
在旧版本的插件中,第 1042 行看起来像
+1041 if (typeof option === 'string') {
+1042 data[option](parameter);
并且选项 deselectAll
被命名为 deselectall
,这将导致此行出错。如果您需要使用此版本的插件,只需将选项替换为 deselectall
即可正常使用。但我强烈建议您更新到最新版本。
FWIW,这个插件的第一个版本在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) {
...