Bootstrap-multiselect: onSelectAll tidak mengaktifkan acara ketika opsi "Pilih semua" diklik

Dibuat pada 2 Jun 2016  ·  6Komentar  ·  Sumber: davidstutz/bootstrap-multiselect

onSelectAll tidak mengaktifkan acara ketika opsi "Pilih semua" diklik. Hanya ketika opsi terakhir dalam daftar dipilih, peristiwa diaktifkan. Acara tidak diaktifkan ketika saya membatalkan pilihan opsi terakhir dalam daftar.

Saya pemula dengan Javascript, jadi mungkin kesalahan saya, tetapi saya memeriksa bahwa menggunakan versi terakhirdan saya mencoba menggunakan fungsi sederhana seperti di sini (https://www.bountysource.com/issues/29165923-why-does-onselectall-function-is-triggered-when-nothing-is-selected).

Ketika saya memilih\batalkan pilihan "Pilih Semua" dalam daftar berubah tetapi acara tidak diaktifkan.
Ketika semua opsi dipilih dan saya membatalkan pilihan dan memilihnya kembali - acara dipecat. Saya mendapat kotak pesan dengan teks "onSelectAll trigger: deselected all!" ("nilai yang dicentang" salah)
Ketika semua opsi tidak dipilih dan saya membatalkan pilihan terakhir - acara tidak diaktifkan.

Ketika saya menguji contoh di sini ( http://davidstutz.github.io/bootstrap-multiselect/#configuration-options-onSelectAll ), saya mendapat efek yang sama - "Pilih Semua" bukan pemicu api. Dan ketika saya membatalkan pilihan dan memilih kembali satu opsi, saya mendapat kotak pesan dengan teks "onSelectAll trigger: deselected all!", bukan dengan "onSelectAll trigger."

Ini mungkin bug dengan browser saya (Chrome 50.0.2661.102 m) tetapi saya juga menguji dengan MS Edge 25.10586.0.0 dan mendapatkan efek yang sama.

Ini kode saya:

    // get SELECT item
var t_select = $('#tbl-columnList');

    // populate select with options - collumns of table in document
$('#report_userActionsLog_table th').each( function(d){    
            th_el = $(this);
            el_text = (th_el.text()? th_el.text(): th_el.children("img").attr("alt"));
            t_select.append( '<option value="'+d+'">'+el_text+'</option>' );     });    

    // init multiselect
t_select.multiselect({ 
    enableFiltering: false,
    maxHeight: 700,
    nonSelectedText: 'Колонки',
    includeSelectAllOption: true,
   // this event not work as expected
    onSelectAll: function(checked) {
                alert('onSelectAll triggered: ' + (checked ? 'selected all' : 'deselected all') + '!');
    },
    buttonWidth: 158,
    templates: {
        button: '<button type="button" class="multiselect dropdown-toggle" data-toggle="dropdown"><span class="multiselect-selected-text"></span> <b class="caret"></b></button>',
        ul: '<ul class="multiselect-container dropdown-menu" style="width: 200px"></ul>',
        filter: '<li class="multiselect-item multiselect-filter"><div class="input-group"><input class="form-control multiselect-search" type="text" style="width: 100px"></div></li>',
        filterClearBtn: '<span class="input-group-btn"><button class="btn btn-default multiselect-clear-filter" type="button"><i class="glyphicon glyphicon-remove-circle"></i></button></span>',
        li: '<li><a tabindex="0"><label></label></a></li>',
        divider: '<li class="multiselect-item divider"></li>',
        liGroup: '<li class="multiselect-item multiselect-group"><label></label></li>'
    },
   // this event work fine
    onChange: function(element, checked) {
                $('#report_userActionsLog_table').DataTable().column($(element).val()).visible( checked );
    }

});

    // select all by default
t_select.multiselect('selectAll', false);
t_select.multiselect('updateButtonText');
bug

Komentar yang paling membantu

Saya telah membuat permintaan tarik untuk menyelesaikan masalah ini: #764

Semua 6 komentar

Saya baru saja mengalami ini sendiri, dan hal yang sama untuk fungsi onDeselectAll yang tidak didokumentasikan tetapi dalam file javascript. Saya tahu versi sebelumnya berfungsi. Saya menemukan ini ketika saya memperbarui ke versi terbaru dan kedua fungsi saya tidak berfungsi. Berikut kode yang saya gunakan. Saya akan mengedit versi kode sebelumnya yang harus saya buat agar fungsi onDeselectAll berfungsi, tetapi alangkah baiknya jika fitur ini berfungsi saat pengguna mengklik kotak centang itu.

$('.multiselect').multiselect({
                enableFiltering: true,
                enableCaseInsensitiveFiltering: true,
                includeSelectAllOption: true,
                includeSelectAllDivider: true,
                maxHeight: 400,
                onSelectAll: function () {
                    console.log("select-all-nonreq");
                },
                onDeselectAll: function () {
                    console.log("deselect-all-nonreq");
                }
            });

+1

Sebagai perbaikan sementara, ganti saja parameter triggerOnSelectAll untuk selectAll/deselectAll di sumbernya

selectAll: function (justVisible, triggerOnSelectAll) {

            triggerOnSelectAll = true; //patch, broken
            var justVisible = typeof justVisible === 'undefined' ? true : justVisible;
...

Saya telah membuat permintaan tarik untuk menyelesaikan masalah ini: #764

Akan melihat permintaan tarik.

Itu tidak bekerja untuk saya
lihat #787

Ada bantuan?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat