开始日期和结束日期输入字段的 JQuery 筛选器表
JQuery Filter Table for Start and End Date input fields
我有一张桌子。此表包含行,每行中的一列是日期。表格上方有两个输入文本框;一个输入框表示"开始日期",另一个输入框表示"结束日期"。假设用户只输入开始日期,我希望表格显示包含该日期及之后的每一行。如果用户只在 TO 输入字段中输入日期,则相反;它将显示日期早于该日期的所有行。以及用户是否有开始和结束日期。它将捕获带有 FROM 日期和 TO 日期的日期,以及包含介于两者之间的日期的每一行。
到目前为止,我完成的是一个输入字段,它将搜索表格的整个主体,并输出该行以获取用户输入的任何字符。
杰奎里
<script>
$("#searchInput").keyup(function () {
//split the current value of searchInput
var data = this.value.split(" ");
//create a jquery object of the rows
var jo = $(".fbody").find("tr");
if (this.value == "") {
jo.show();
return;
}
//hide all the rows
jo.hide();
//Recusively filter the jquery object to get results.
jo.filter(function (i, v) {
var $t = $(this);
for (var d = 0; d < data.length; ++d) {
if ($t.is(":contains('" + data[d] + "')")) {
return true;
}
}
return false;
})
//show the rows that match.
.show();
}).focus(function () {
this.value = "";
$(this).unbind('focus');
})
</script>
.HTML
<input id="searchInput" type="text" placeholder="From"/>
<input id="searchInput" type="text" placeholder="To" >
<tbody class="fbody">
<tr>
<td>something</td>
<td>something</td>
<td>4/18/2016</td>
<td>something</td>
</tr>
<tr>
<td>something</td>
<td>something</td>
<td>4/19/2016</td>
<td>something</td>
</tr>
<tr>
<td>something</td>
<td>something</td>
<td>4/20/2016</td>
<td>something</td>
</tr>
</tbody>
请帮忙。谢谢。
您当前代码的一个大问题是 DOM id
重复。你的逻辑的其余部分很接近,但我简化了它。
下面的代码段应该适合您。如果在顶部输入的日期无效,它们将被完全忽略。请注意,由于我们是在 input
事件上运行的,因此您将暂时筛选出所有行,因为它将在它们填充到 4 位数字之前解释几年。您可能希望以不同的方式对此进行说明,或者可能改用 blur
事件。
$(".searchInput").on("input", function() {
var from = stringToDate($("#searchFrom").val());
var to = stringToDate($("#searchTo").val());
$(".fbody tr").each(function() {
var row = $(this);
var date = stringToDate(row.find("td").eq(2).text());
//show all rows by default
var show = true;
//if from date is valid and row date is less than from date, hide the row
if (from && date < from)
show = false;
//if to date is valid and row date is greater than to date, hide the row
if (to && date > to)
show = false;
if (show)
row.show();
else
row.hide();
});
});
//parse entered date. return NaN if invalid
function stringToDate(s) {
var ret = NaN;
var parts = s.split("/");
date = new Date(parts[2], parts[0], parts[1]);
if (!isNaN(date.getTime())) {
ret = date;
}
return ret;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="searchFrom" class="searchInput" type="text" placeholder="From"/>
<input id="searchTo" class="searchInput" type="text" placeholder="To" >
<table class="fbody" border="1">
<tr>
<td>nothing</td>
<td>nothing</td>
<td>4/18/2016</td>
<td>nothing</td>
</tr>
<tr>
<td>nothing</td>
<td>nothing</td>
<td>4/19/2016</td>
<td>nothing</td>
</tr>
<tr>
<td>nothing</td>
<td>nothing</td>
<td>4/20/2016</td>
<td>nothing</td>
</tr>
</table>
相关文章:
- jquery日期选择器年份范围默认值
- jquery日期选择器失去了交互性
- jquery日期选择器显示与值不同的文本
- JQuery UI日期选择器:在选择出发日期时自动弹出返回日期
- 使用AJAX将日期从SQL服务器传递到jQuery日历
- 如何使用jquery更改为所需的日期格式
- 如何使用jQuery按数据日期属性选择元素
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- jQuery Datepicker从日期开始设置默认值
- 如何在jQuery Mobile中设置100%宽度的输入类型日期
- jQuery完整日历添加事件,仅包含月份和日期
- Jquery setdate设置的日期小于实际选定日期的一
- Jquery UI日期选择器不关注输入
- 如何显示/隐藏范围,具体取决于本地时间是否等于“开始日期”和“结束日期”Jquery之间
- 禁用列表日期 jquery 日期选择器
- 用户选择日期10年从今天日期jquery日期选择器
- 计算结束日期从月和开始日期JQuery
- 只选择一个数组的日期Jquery日期拾取器
- 根据当前日期jQuery按顺序显示即将到来的日期
- Kendo DatePicker 禁用日期 jQuery