javascript - 单击 SelectAllOption 多选时未触发 onChange 事件

标签 javascript jquery bootstrap-multiselect

我使用 bootstrap multiselect ,根据所选选项获取数据。此过滤器数据将在 onChange 触发时起作用,但在尝试选择所有 onChange 时不起作用:

function getOptions(node, isFilter) {
    var isChanged = false;
    return {
        enableCaseInsensitiveFiltering: isFilter,
        includeSelectAllOption: true,
        filterPlaceholder: 'Search ...',
        nonSelectedText: node,
        numberDisplayed: 1,
        buttonWidth: '100%',
        maxHeight: 400,
        onChange: function () {
            alert('Changes');
            isChanged = true;
        },
        onDropdownHide: function (event) {
            if (isChanged) {
                filterData(node);
                isChanged = false;
            }

        }
    }
}
$('#myselect').multiselect(getOptions('myselect', true));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
<!-- Build your select: -->
<select id="myselect" multiple="multiple">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="4">Option 4</option>
    <option value="5">Option 5</option>
    <option value="6">Option 6</option>
</select>

最佳答案

Bootstrap multiselect 提供了一个名为“onSelectAll”的函数。此功能将用于选择所有选项。您需要将 onSelectAll 函数与 onChange 函数一起使用。

function getOptions(node, isFilter) {
var isChanged = false;
return {
    enableCaseInsensitiveFiltering: isFilter,
    includeSelectAllOption: true,
    filterPlaceholder: 'Search ...',
    nonSelectedText: node,
    numberDisplayed: 1,
    buttonWidth: '100%',
    maxHeight: 400,
    onChange: function () {
        isChanged = true;
    },
    onSelectAll: function() {
        isChanged = true;
    },
    onDropdownHide: function (event) {
        if (isChanged) {
            filterData(node);
            isChanged = false;
        }

    }
}
}
$('#DDLCity').multiselect(getOptions('City', true));

关于javascript - 单击 SelectAllOption 多选时未触发 onChange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45344156/

相关文章:

javascript - AngularJS,管理二进制数据

javascript - Highcharts 中的列间距

PHP ajax使用新数组上传多个文件

javascript - getPlace() 为动态添加的文本输入给出 Undefined

javascript - 如何在使用 jQuery 关闭下拉菜单时触发事件?

jquery - 如何更改 bootstrap-multiselect 的设计

javascript - 标签 javascript 设置最大值

javascript - 在 Javascript 中如何 var myvar = value !=1 工作?

javascript - 如何将多项选择中选定的元素插入到输入中?

javascript - onInitialized 如何在 Bootstrap-multiselect 中工作