Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据表从格式化编号中搜索编号_Javascript_Jquery_Html_Filter_Datatables - Fatal编程技术网

Javascript 数据表从格式化编号中搜索编号

Javascript 数据表从格式化编号中搜索编号,javascript,jquery,html,filter,datatables,Javascript,Jquery,Html,Filter,Datatables,我正在使用dataTables搜索HTML表中的数据 尝试按数字筛选时出现问题。这些数字是格式化的,因此它们不会像应该的那样被过滤 例如: 在表中,我有一个单元格包含“123456”(而不是“123456”) 如果我在搜索框“1234”中键入,它将过滤掉号码。如果我输入“3456”,它会找到我要找的东西 我已尝试格式化键入的数字,但效果不够好(它将“1234”格式化为“1234”,因此找不到“123456”,因为逗号放错了位置。另一个示例-如果我查找“50”,它将过滤掉5000): $(“#活动

我正在使用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的数据,请使用cell
    data 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();
        } );
    } );