$(function () { function editableTable() { function restoreRow(oTable, nRow) { var aData = oTable.fnGetData(nRow); var jqTds = $('>td', nRow); for (var i = 0, iLen = jqTds.length; i < iLen; i++) { oTable.fnUpdate(aData[i], nRow, i, false); } oTable.fnDraw(); } function editRow(oTable, nRow) { var aData = oTable.fnGetData(nRow); var jqTds = $('>td', nRow); jqTds[0].innerHTML = ''; jqTds[1].innerHTML = ''; jqTds[2].innerHTML = ''; jqTds[3].innerHTML = ''; jqTds[4].innerHTML = '
Save Remove
'; } function saveRow(oTable, nRow) { var jqInputs = $('input', nRow); oTable.fnUpdate(jqInputs[0].value, nRow, 0, false); oTable.fnUpdate(jqInputs[1].value, nRow, 1, false); oTable.fnUpdate(jqInputs[2].value, nRow, 2, false); oTable.fnUpdate(jqInputs[3].value, nRow, 3, false); oTable.fnUpdate('
Edit Remove
', nRow, 4, false); oTable.fnDraw(); } function cancelEditRow(oTable, nRow) { var jqInputs = $('input', nRow); oTable.fnUpdate(jqInputs[0].value, nRow, 0, false); oTable.fnUpdate(jqInputs[1].value, nRow, 1, false); oTable.fnUpdate(jqInputs[2].value, nRow, 2, false); oTable.fnUpdate(jqInputs[3].value, nRow, 3, false); oTable.fnUpdate('Edit', nRow, 4, false); oTable.fnDraw(); } var oTable = $('#table-editable').dataTable({ "aLengthMenu": [ [5, 15, 20, -1], [5, 15, 20, "All"] // change per page values here ], "sDom" : "<'row'<'col-md-6 filter-left'f><'col-md-6'T>r>t<'row'<'col-md-6'i><'col-md-6'p>>", "oTableTools" : { "sSwfPath": "assets/plugins/datatables/swf/copy_csv_xls_pdf.swf", "aButtons":[ { "sExtends":"pdf", "mColumns":[0, 1, 2, 3], "sPdfOrientation":"landscape" }, { "sExtends":"print", "mColumns":[0, 1, 2, 3], "sPdfOrientation":"landscape" },{ "sExtends":"xls", "mColumns":[0, 1, 2, 3], "sPdfOrientation":"landscape" },{ "sExtends":"csv", "mColumns":[0, 1, 2, 3], "sPdfOrientation":"landscape" } ] }, // set the initial value "iDisplayLength": 10, "bPaginate": false, "sPaginationType": "bootstrap", "oLanguage": { "sLengthMenu": "_MENU_ records per page", "oPaginate": { "sPrevious": "Prev", "sNext": "Next" }, "sSearch": "" }, "aoColumnDefs": [{ 'bSortable': false, 'aTargets': [0] } ] }); jQuery('#table-edit_wrapper .dataTables_filter input').addClass("form-control medium"); // modify table search input jQuery('#table-edit_wrapper .dataTables_length select').addClass("form-control xsmall"); // modify table per page dropdown var nEditing = null; $('#table-edit_new').click(function (e) { e.preventDefault(); var aiNew = oTable.fnAddData(['', '', '', '', '

Edit Remove

' ]); var nRow = oTable.fnGetNodes(aiNew[0]); editRow(oTable, nRow); nEditing = nRow; }); $('#table-editable a.delete').live('click', function (e) { e.preventDefault(); if (confirm("Are you sure to delete this row ?") == false) { return; } var nRow = $(this).parents('tr')[0]; oTable.fnDeleteRow(nRow); // alert("Deleted! Do not forget to do some ajax to sync with backend :)"); }); $('#table-editable a.cancel').live('click', function (e) { e.preventDefault(); if ($(this).attr("data-mode") == "new") { var nRow = $(this).parents('tr')[0]; oTable.fnDeleteRow(nRow); } else { restoreRow(oTable, nEditing); nEditing = null; } }); $('#table-editable a.edit').live('click', function (e) { e.preventDefault(); /* Get the row as a parent of the link that was clicked on */ var nRow = $(this).parents('tr')[0]; if (nEditing !== null && nEditing != nRow) { restoreRow(oTable, nEditing); editRow(oTable, nRow); nEditing = nRow; } else if (nEditing == nRow && this.innerHTML == "Save") { /* This row is being edited and should be saved */ saveRow(oTable, nEditing); nEditing = null; // alert("Updated! Do not forget to do some ajax to sync with backend :)"); } else { /* No row currently being edited */ editRow(oTable, nRow); nEditing = nRow; } }); $('.dataTables_filter input').attr("placeholder", "Search a user..."); }; editableTable(); });