[英]how to combine 2 functions javascript of datatables
我還收到錯誤數據表警告:表 id=示例 - 無法重新初始化數據表。 有關此錯誤的更多信息,請參閱http://datatables.net/tn/3
這是我的代碼
我還收到錯誤數據表警告:表 id=示例 - 無法重新初始化數據表。 有關此錯誤的更多信息,請參閱http://datatables.net/tn/3
這是我的代碼
第一個 javascript
<script type="text/javascript">
//fungsi untuk filtering data berdasarkan tanggal
var start_date;
var end_date;
var DateFilterFunction = (function (oSettings, aData, iDataIndex) {
var dateStart = parseDateValue(start_date);
var dateEnd = parseDateValue(end_date);
//Kolom tanggal yang akan kita gunakan berada dalam urutan 2, karena dihitung mulai dari 0
//nama depan = 0
//nama belakang = 1
//tanggal terdaftar =2
var evalDate= parseDateValue(aData[2]);
if ( ( isNaN( dateStart ) && isNaN( dateEnd ) ) ||
( isNaN( dateStart ) && evalDate <= dateEnd ) ||
( dateStart <= evalDate && isNaN( dateEnd ) ) ||
( dateStart <= evalDate && evalDate <= dateEnd ) )
{
return true;
}
return false;
});
// fungsi untuk converting format tanggal dd/mm/yyyy menjadi format tanggal javascript menggunakan zona aktubrowser
function parseDateValue(rawDate) {
var dateArray= rawDate.split("/");
var parsedDate= new Date(dateArray[2], parseInt(dateArray[1])-1, dateArray[0]); // -1 because months are from 0 to 11
return parsedDate;
}
$( document ).ready(function() {
//konfigurasi DataTable pada tabel dengan id example dan menambahkan div class dateseacrhbox dengan dom untuk meletakkan inputan daterangepicker
var $dTable = $('#example').DataTable({
"dom": "<'row'<'col-sm-4'l><'col-sm-5' <'datesearchbox'>><'col-sm-3'f>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>"
});
//menambahkan daterangepicker di dalam datatables
$("div.datesearchbox").html('<div class="input-group"> <div class="input-group-addon"> <i class="glyphicon glyphicon-calendar"></i> </div><input type="text" class="form-control pull-right" id="datesearch" placeholder="Search by date range.."> </div>');
document.getElementsByClassName("datesearchbox")[0].style.textAlign = "right";
//konfigurasi daterangepicker pada input dengan id datesearch
$('#datesearch').daterangepicker({
autoUpdateInput: false
});
//menangani proses saat apply date range
$('#datesearch').on('apply.daterangepicker', function(ev, picker) {
$(this).val(picker.startDate.format('DD/MM/YYYY') + ' - ' + picker.endDate.format('DD/MM/YYYY'));
start_date=picker.startDate.format('DD/MM/YYYY');
end_date=picker.endDate.format('DD/MM/YYYY');
$.fn.dataTableExt.afnFiltering.push(DateFilterFunction);
$dTable.draw();
});
$('#datesearch').on('cancel.daterangepicker', function(ev, picker) {
$(this).val('');
start_date='';
end_date='';
$.fn.dataTable.ext.search.splice($.fn.dataTable.ext.search.indexOf(DateFilterFunction, 1));
$dTable.draw();
});
});
第二個 javascript
<script>
$(document).ready(function() {
$('#example').DataTable( {
"footerCallback": function ( row, data, start, end, display ) {
var api = this.api();
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column( 4 )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Total over this page
pageTotal = api
.column( 4, { page: 'current'} )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
$(api.column(4).footer()).html(this.fnSettings().fnFormatNumber( 'Rp ' +pageTotal));
// Update footer
// $( api.column( 4 ).footer() ).html(
// 'Rp '+pageTotal +' '
// );
}
} );
} );
</script>
正如您發布的鏈接中所述,您不能在同一個 HTML 節點上對 DataTable 實例進行兩次初始化。
您正在嘗試執行此操作,因為您在#example
節點上調用了兩次 DataTable() (第一個傳入“dom”初始化選項,第二個傳入footerCallback初始化選項)。
簡單地說,將它們一起傳遞到一個初始化調用中:
$('#example').DataTable({
"dom": // dom code,
"footerCallback": function ( row, data, start, end, display ) {
// code
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.