Javascript 数据表从格式化编号中搜索编号
我正在使用dataTables搜索HTML表中的数据 尝试按数字筛选时出现问题。这些数字是格式化的,因此它们不会像应该的那样被过滤 例如: 在表中,我有一个单元格包含“123456”(而不是“123456”) 如果我在搜索框“1234”中键入,它将过滤掉号码。如果我输入“3456”,它会找到我要找的东西 我已尝试格式化键入的数字,但效果不够好(它将“1234”格式化为“1234”,因此找不到“123456”,因为逗号放错了位置。另一个示例-如果我查找“50”,它将过滤掉5000):Javascript 数据表从格式化编号中搜索编号,javascript,jquery,html,filter,datatables,Javascript,Jquery,Html,Filter,Datatables,我正在使用dataTables搜索HTML表中的数据 尝试按数字筛选时出现问题。这些数字是格式化的,因此它们不会像应该的那样被过滤 例如: 在表中,我有一个单元格包含“123456”(而不是“123456”) 如果我在搜索框“1234”中键入,它将过滤掉号码。如果我输入“3456”,它会找到我要找的东西 我已尝试格式化键入的数字,但效果不够好(它将“1234”格式化为“1234”,因此找不到“123456”,因为逗号放错了位置。另一个示例-如果我查找“50”,它将过滤掉5000): $(“#活动
$(“#活动#表_过滤器输入”).keydown(函数(){
var current_value=$(“#活动_表_过滤器输入”).val();
当前值=当前值。替换(/,/g,);//从当前值中删除任何逗号。
var key=event.keyCode;
var entered_value=String.fromCharCode((96这个问题有很多解决方案,但我将提到两个最简单的解决方案
对于源于HTML的数据,请使用celldata search
属性指定非格式化的数字
例如:
<td data-search="123456">123,456</td>
要使用此格式的数据,请对columns
或columnDefs
列说明使用以下选项:
{
data: 'formatted_number',
render: {
_: 'display',
filter: 'filter'
}
}
有关演示和更多信息,请参见示例
您是否尝试过使用developmental?它在搜索整数数据方面比智能搜索
选项要好得多。请参阅下面使用一系列整数的示例。只需确保您的整数数据与表中的相同。还有一些方法可以帮助您使用逗号格式化这些整数
/* Custom filtering function which will search data in column four between two values */
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
var min = parseInt( $('#min').val(), 10 );
var max = parseInt( $('#max').val(), 10 );
var age = parseFloat( data[3] ) || 0; // use data for the age column
if ( ( isNaN( min ) && isNaN( max ) ) ||
( isNaN( min ) && age <= max ) ||
( min <= age && isNaN( max ) ) ||
( min <= age && age <= max ) )
{
return true;
}
return false;
}
);
$(document).ready(function() {
var table = $('#example').DataTable();
// Event listener to the two range filtering inputs to redraw on input
$('#min, #max').keyup( function() {
table.draw();
} );
} );
/*自定义筛选功能,用于在两个值之间搜索第四列中的数据*/
$.fn.dataTable.ext.search.push(
功能(设置、数据、数据索引){
var min=parseInt($('#min').val(),10);
var max=parseInt($('#max').val(),10);
var age=parseFloat(数据[3])| | 0;//将数据用于age列
如果((isNaN(最小值)和&isNaN(最大值))||
(伊斯南(分钟)&&age请分享您迄今为止尝试过的代码添加,但我看不出它有什么帮助。如果您查找50个,它将找不到写在某处的5000个。您所需要做的就是发布HTML5数据-*属性-单元格数据链接。这非常有效。谢谢。它实际上甚至解决了我没有给她写的另一个问题E
{
data: 'formatted_number',
render: {
_: 'display',
filter: 'filter'
}
}
/* Custom filtering function which will search data in column four between two values */
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
var min = parseInt( $('#min').val(), 10 );
var max = parseInt( $('#max').val(), 10 );
var age = parseFloat( data[3] ) || 0; // use data for the age column
if ( ( isNaN( min ) && isNaN( max ) ) ||
( isNaN( min ) && age <= max ) ||
( min <= age && isNaN( max ) ) ||
( min <= age && age <= max ) )
{
return true;
}
return false;
}
);
$(document).ready(function() {
var table = $('#example').DataTable();
// Event listener to the two range filtering inputs to redraw on input
$('#min, #max').keyup( function() {
table.draw();
} );
} );