2017-01-27 5 views
0

Ich habe diesen Code unten, klicken Sie auf ein Kontrollkästchen in meinem DataTable und erhalten Sie die IDs und speichern Sie in einem Array. Zum Beispiel habe ich eine 2 separate DataTables Erste ist für den Präsidenten und zweitens ist für die Senatoren.Limit überprüft, checkbox in bootstrap dataTable

Wir wissen, dass wir nur eins im Präsidenten wählen können und für Senatoren können wir viele wählen.

Mein Problem hier ist, ich kann überprüfen, wie viele Kontrollkästchen in der DataTables. Wie man die überprüften Checkboxen eingrenzt?

Noch lernen im Bootstrap hier.

JS-Code

var dataTablestest = $("#tbltest").DataTable({ 
    responsive: true, 
    processing: true, 
    info: true, 
    search: true, 
    stateSave: true, 
    order: [[1, "asc"], [2, "asc"]], 
    lengthMenu: [[50, 100, 200, -1], [50, 100, 200, "All"]], 
    ajax: { "url": "/Voting/LoadTableTest" }, 

    columns: 
    [ 
     { data: "testID", title: "", visible: false, searchable: false }, 
     { data: "Fullname", title: "FullName", sClass: "alignRight" }, 
     { data: "Position", title: "Position", sClass: "alignRight" }, 
     { data: "party", title: "Party", sClass: "alignRight" }, 
     { data: "ActionMenu", title: "Click to vote", searchable: false, orderable: false, sClass: "alignCenter", 
      "mRender": function (data) { 
       return '<center><label><input class="checkId" type="checkbox" id="chkvote_' + data + '" value=""/></label></center>'; 
      } 
     } 
    ] 
}); 
var arrayIds = []; 
$('#tbltest tbody').on('click', 'tr', function (e) { 
    if ($(e.target).is(".checkId")) { 
     var Ids = dataTablestest.row(this).data().testID; 
     arrayIds.push(Ids); 
     return 
    } 
}); 

EDIT

fand ich eine Antwort, aber es gibt ein Problem mit ihm. Mein Zähler wird jedes Mal erhöht, wenn ich ein Kontrollkästchen in meiner Datentabelle ankreuze.

$('#tbltest tbody').on('click', 'tr', function (e) { 
    if ($(e.target).is(".checkId")) { 
     if ($(e.target).is(":checked") == true) { 
      CheckCount = CheckCount + 1; 
      var Ids = dataTablestest.row(this).data().testID; 
      if (CheckCount > 1) { 
       return false; 
      } 
      arrayIds.push(Ids); 
      return 
     } 
     else { 
      CheckCount = parseInt(CheckCount) - parseInt(1); 
     } 
    } 
}); 

Antwort

0

Ich benutze diesen Code unter .. Vielen Dank an alle, die meinen Thread anzeigen.

var arrayIds = []; 
$('#tbltest tbody').on('click', 'tr', function (e) { 
    if ($(e.target).is(".checkId")) { 
     var Ids = dataTablestest.row(this).data().testID; 
     if ($(e.target).is(":checked") == true) { 
      var lenArray = arrayIds.length; 
      if (lenArray < 1) { 
       arrayIds.push(Ids); 
      } else { 
       return false; 
      } 
     } 
     else { 
      for (var i = arrayIds.length - 1; i >= 0; i--) { 
       if (arrayIds[i] === Ids) { 
        arrayIds.splice(i, 1); 
       } 
      } 
     } 
    } 
    return; 
}); 
Verwandte Themen