Saya menggunakan jquery Datatable di mana satu kolom adalah kotak centang. Jadi saat memilihnya, acara perubahan tidak diaktifkan .. Ini kode saya ...

$("#divAddDocument").on("change", $("input[id*='addDocCheckbox_']"), function (e) {
    var checkboxId = e.target.id;
    var _index = checkboxId.substring(checkboxId.lastIndexOf('_') + 1, checkboxId.length);
    _docUpload.DmsDocumentsList[_index].IsGridItemSelected = true;
    if (_docUpload.IsCorrespondence) {
        $("input[id*='addDocCheckbox_']").each(function () {
            if (checkboxId != $(this).id) {
                $(this).prop("disabled", true);
                $(this).prop("checked", false);
                var _counter = $(this).id.substring($(this).id.lastIndexOf('_') + 1, $(this).id.length);
                _docUpload.DmsDocumentsList[_counter].IsGridItemSelected = false;
            }
        });
    }
});

------------- Kolom tabel data-------------------

var columns = [
        {
            "data": "", "width": "25%", "name": "Add", "title": "Add", "orderable": false,
            render: function (data, type, row) {
                return '<input type="checkbox" name="Checkbox" class="addDocCheckBox" id="addDocCheckbox_' + row["Counter"] + '">'
            }
        },
        { "data": "DocumentType", "width": "25%", "name": "Document Type", "title": "Document Type", "orderable": false },
        { "data": "IndividualName", "width": "25%", "name": "Name", "title": "Name", "orderable": false },
        { "data": "UploadDateTime", "width": "25%", "name": "Upload Date/Generated", "title": "Upload Date/Generated", "orderable": false }
];

Bantuan apa pun dihargai..

1
Siddharth Ubana 14 Maret 2019, 18:36

1 menjawab

Jawaban Terbaik

Masalah utamanya adalah Anda perlu memberikan string sebagai argumen kedua on() di pengendali acara yang didelegasikan, bukan objek jQuery Anda saat ini. Yang terakhir tidak berfungsi karena elemen tidak ada di DOM ketika Anda mencoba untuk memilihnya, maka objek jQuery kosong. Ini adalah versi tetap:

$("#divAddDocument").on("change", "input[id*='addDocCheckbox_']", function(e) {
  // your code...
});

Masalah lainnya adalah penggunaan $(this).id yang berulang. id bukan properti dari objek jQuery, maka ini akan selalu mengembalikan undefined.

Untuk memperbaikinya, gunakan properti id dari Elemen itu sendiri:

this.id

Atau gunakan metode prop() untuk mendapatkan atribut melalui jQuery:

$(this).prop('id')

Ini adalah versi logika Anda yang sepenuhnya diperbarui:

$('#divAddDocument').on('change', 'input[id*="addDocCheckbox_"]', function(e) {
  var _index = this.id.split('_')[1];
  _docUpload.DmsDocumentsList[_index].IsGridItemSelected = true;

  if (_docUpload.IsCorrespondence) {
    $('input[id*="addDocCheckbox_"]').each(function() {
      if (checkboxId != this.id) {
        this.disabled = true;
        this.checked = false;
        var _counter = this.id.split('_')[1];
        _docUpload.DmsDocumentsList[_counter].IsGridItemSelected = false;
      }
    });
  }
});
0
Rory McCrossan 14 Maret 2019, 15:45