gpt4 book ai didi

javascript - 使用逗号数字进行多重过滤的数据表

转载 作者:行者123 更新时间:2023-12-03 02:21:40 27 4
gpt4 key购买 nike

您好,我正在使用这个数据表 here

现在,过滤器搜索最小 d1 和最大 d1 值正常工作,但问题是它无法处理使用逗号正确的值,而这是此功能所必需的。

示例:我希望过滤器显示 1.5 到 2.5 之间的结果,目前它将显示 1.00 到 2.99 之间的任何数字,这是错误的。

这可能是什么原因造成的?我在这里缺少正则表达式吗?

另外:可以将值从“,”更改为“.”这意味着 1,5 或 1.5 在数据中没有问题,如果这有帮助的话。

代码:

HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
<link rel="stylesheet" type="text/css" href="data\jquery.dataTables.min.css">
<script type="text/javascript" language="javascript" src="data\jquery-1.12.4.js"></script>
<script type="text/javascript" charset="utf8" src="data\jquery.dataTables.min.js"></script>
<script src="data\custom.js" charset="utf-8"></script>
</head>

<body>
<table border="0" cellspacing="5" cellpadding="5">
<tbody><tr>
<td>Minimum d1</td>
<td><input type="text" id="min" name="min"></td>
</tr>
<tr>
<td>Maximum d1</td>
<td><input type="text" id="max" name="max"></td>
</tr>
</tbody>


</table>
<table id="example" class="display" cellspacing="0" width="100%">

<thead>
<tr>
<th>M/Ø</th>
<th>Ww</th>
<th>Norm</th>
<th>d<sub>1</sub></th>
<th>d<sub>2</sub></th>
<th>h</th>

</tr>
</thead>
<tfoot></tfoot>
</table>
</body>


</html>

JS

/* 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 );
console.log(min);
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( {
"ajax": "data.txt"
} );

// Event listener to the two range filtering inputs to redraw on input
$('#min, #max').keyup( function() {
table.draw();
} );
} );

Data.txt(虚拟数据)

{
"data": [
[
"1",
"",
"ISO 7089 + 7090 (DIN 125-1 Pk A)",
"1,1",
"3",
"0,3"
],

[
"1",
"",
"ISO 7092 (DIN 433 Pk A)",
"1,1",
"2,5",
"0,3"
],

[
"1",
"",
"ISO 7092 (DIN 433 Pk A)",
"2,6",
"2,5",
"0,3"
],

[
"1",
"",
"ISO 7092 (DIN 433 Pk A)",
"1,1",
"2,5",
"0,3"
],



[
"1",
"",
"ISO 7092 (DIN 433 Pk A)",
"1,4",
"2,5",
"0,3"
]



]
}

最佳答案

现在,您的最小值和最大值是使用 parseInt 定义的,从而为您提供整数,而您需要 float 。

我认为你应该更换

var min = parseInt( $('#min').val(), 10 );
var max = parseInt( $('#max').val(), 10 );

var min = parseFloat($('#min').val().replace(',', '.'));
var max = parseFloat($('#max').val().replace(',', '.'));

另外,请注意替换部分,因为 parseFloat 不会将逗号作为小数分隔符处理,因此您的年龄数据将无法正确解析。您还需要执行以下操作:

var age = parseFloat(data[3].replace(',', '.')) || 0;

关于javascript - 使用逗号数字进行多重过滤的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com