ugrás a tartalomhoz

Ajax, checkbox megtartása lapozáskor.

Incomingson · 2019. Aug. 13. (K), 11.05
Hali.

Ez a probléma már régebbi. Félmegoldásokat sikerült összehoznom, de egyszerűen belekavarodok.

Az egyik script-et szépen össze lehet kapcsolni a szerver oldallal. A másikat kb annyira sikerült üzembe helyeznem hogy az oldalanként megtartotta a checkboxot. Csak kb a kettőt nem sikerült összehoznom.

Kérdés:

Ebben a scriptet melyik rész felel az oldalankénti checkbox megtartásáért? Próbáltam szétszedni a scriptet és biztosra veszem hogy a render lesz az. Azonban mégsem sikerül implementálnom.

Checkbox megtartása lapozáskor
A működő szerver oldallal de nincs checkbox megtartás lapozáskor

Az első, ahol checkbox megtartás van, de szerveroldal nincs.
  1. $(document).ready(function (){  
  2. var userData = [  
  3. "1""Email""Alma""Member" ],  
  4. "2""Email""Alma 2""Member" ]  
  5. ];  
  6. var table = $('#example').DataTable({  
  7. 'data': userData,  
  8. 'columnDefs': [{  
  9. 'targets': 0,  
  10. 'searchable':false,  
  11. 'orderable':false,  
  12. 'className''dt-body-center',  
  13. 'render'function (data, type, full, meta){  
  14. return '<input type="checkbox" name="id[]" value="'  
  15. + $('<div/>').text(data).html() + '">';  
  16. }  
  17. }],  
  18. 'order': [1, 'asc'],  
  19. "createdRow"function(row, data, dataIndex){  
  20. $(row).attr("id""tblRow_" + data[0]);  
  21. }  
  22. });  
  23. // Handle click on "Select all" control  
  24. $('#example-select-all').on('click'function(){  
  25. // Check/uncheck all checkboxes in the table  
  26. var rows = table.rows({ 'search''applied' }).nodes();  
  27. $('input[type="checkbox"]', rows).prop('checked'this.checked);  
  28. });  
  29. // Handle click on checkbox to set state of "Select all" control  
  30. $('#example tbody').on('change''input[type="checkbox"]'function(){  
  31. // If checkbox is not checked  
  32. if(!this.checked){  
  33. var el = $('#example-select-all').get(0);  
  34. // If "Select all" control is checked and has 'indeterminate' property  
  35. if(el && el.checked && ('indeterminate' in el)){  
  36. // Set visual state of "Select all" control  
  37. // as 'indeterminate'  
  38. el.indeterminate = true;  
  39. }  
  40. }  
  41. });  
  42. $('#frm-example').on('submit'function(e){  
  43. var form = this;  
  44. // Iterate over all checkboxes in the table  
  45. table.$('input[type="checkbox"]').each(function(){  
  46. // If checkbox doesn't exist in DOM  
  47. if(!$.contains(document, this)){  
  48. // If checkbox is checked  
  49. if(this.checked){  
  50. // Create a hidden element  
  51. $(form).append(  
  52. $('<input>')  
  53. .attr('type''hidden')  
  54. .attr('name'this.name)  
  55. .val(this.value)  
  56. );  
  57. }  
  58. }  
  59. });  
  60. // FOR TESTING ONLY  
  61. // Output form data to a console  
  62. $('#example-console').text($(form).serialize());  
  63. console.log("Form submission", $(form).serialize());  
  64. // Prevent actual form submission  
  65. e.preventDefault();  
  66. });  
  67. });  
A másik ami gyönyörűen működik szerver oldallal, viszont nincs checkbox megtartás:
  1. var dataTable;  
  2. $(document).ready(function(){  
  3. // Initialize datatable  
  4. dataTable = $('#empTable').DataTable({  
  5. 'processing'true,  
  6. 'serverSide'true,  
  7. 'serverMethod''post',  
  8. 'ajax': {  
  9. 'url':'ajaxfile.php',  
  10. 'data'function(data){  
  11. // Read values  
  12. data.request = 1;  
  13. }  
  14. },  
  15. 'columns': [  
  16. { data: 'emp_name' },  
  17. { data: 'email' },  
  18. { data: 'gender' },  
  19. { data: 'salary' },  
  20. { data: 'city' },  
  21. { data: 'action' },  
  22. ],  
  23. 'columnDefs': [ {  
  24. 'targets': [5], // column index (start from 0)  
  25. 'orderable'false// set orderable false for selected columns  
  26. }]  
  27. });  
  28. // Check all  
  29. $('#checkall').click(function(){  
  30. if($(this).is(':checked')){  
  31. $('.delete_check').prop('checked'true);  
  32. }else{  
  33. $('.delete_check').prop('checked'false);  
  34. }  
Próbáltam összehozni a kettőt de nagyon nem ment.
A segítséget előre is köszönöm.
 
1

Mi lenne, ha

Pepita · 2019. Aug. 14. (Sze), 13.00
ahelyett, hogy innen-onnan másolt (mások által valahogy kitalált) "szkriptek" hegesztgetése helyett inkább Te járnál utána, hogy mit is tud, hogyan műxik az általad használt DataTable?
Lépésről lépésre: először legyen meg js-ből a tábla kirakása, aztán legyen ajax adatlekérés, végül variálj a checkbox-okkal.
Nem szabad elfeledkezni arról sem, hogy ha a checkbox-ok a DataTable egyes soraiban vannak, akkor azoknak előbb létre kell jönniük, utána lehet eseménykezelőre feliratkozni.
A második kódban furcsa lenne, ha lenne "checkbox megtartás", mert van "checkall", ezt én logikailag nem tudom összeegyeztetni a megtartással, de lehet, hogy csak én..
Mindenesetre ilyenkor nekem az szokott beválni, ha 0-ról, apró lépésenként megcsinálom magamnak. Az idézett kódokhoz nincs DOM (HTML), így különösen nehéz lenne érdemben hozzászólni szerintem.