jQuery包含/不包含日期范围
我有一个带有订单号和订购日期等属性的项目列表。我的目标是将用户的所有订单加载到这些item div中,并允许它们进行筛选。当用户在文本字段中键入订单号时,我已将其正确过滤。现在,我尝试允许他们选择一个日期范围,并根据需要隐藏或显示div 下面是一个示例div:jQuery包含/不包含日期范围,jquery,jquery-ui,jquery-ui-datepicker,Jquery,Jquery Ui,Jquery Ui Datepicker,我有一个带有订单号和订购日期等属性的项目列表。我的目标是将用户的所有订单加载到这些item div中,并允许它们进行筛选。当用户在文本字段中键入订单号时,我已将其正确过滤。现在,我尝试允许他们选择一个日期范围,并根据需要隐藏或显示div 下面是一个示例div: <div class="item" data-orderNo="457748322" data-dateOrdered="12/17/2014"> ... Order Details ... </div>
<div class="item" data-orderNo="457748322" data-dateOrdered="12/17/2014">
... Order Details ...
</div>
最后,我有两个日期选择器字段:fromDateFilter(最早日期)和toDateFilter(最晚日期)。我正在尝试以下操作,但不起作用:
$( "#fromDateFilter" ).datepicker({
onClose: function ( selectedDate ) {
if(selectedDate == "") {
$(".item").removeClass( "hiddenDateFrom" );
} else {
var start = new Date(selectedDate);
var end = new Date($(".item").attr("data-dateOrdered"))
if (start < end) {
$(".item:not([data-dateOrdered*='"+selectedDate+"'])").addClass( "hiddenDateFrom" );
} else {
$(".item[data-dateOrdered*='"+selectedDate+"']").removeClass( "hiddenDateFrom" );
}
}
}
});
}
});
$(“#fromDateFilter”).datepicker({
onClose:函数(selectedDate){
如果(selectedDate==“”){
$(“.item”).removeClass(“hiddenDateFrom”);
}否则{
var开始=新日期(selectedDate);
var end=新日期($(“.item”).attr(“数据日期顺序”))
如果(开始<结束){
$(“.item:not([data dateOrdered*=”“+selectedDate+”))).addClass(“hiddenDateFrom”);
}否则{
$(“.item[data dateOrdered*=”“+selectedDate+“']”)。removeClass(“hiddenDateFrom”);
}
}
}
});
}
});
toDateFilter是一样的,我只是试着改变胡萝卜的方向。你知道我做错了什么吗?你可能需要一个单一的过滤方法,比如
function filter() {
var orderNo = $('#orderNumberFilter').val(),
fd = $("#fromDateFilter").datepicker('getDate'),
td = $("#toDateFilter").datepicker('getDate'),
$items = $(".item"),
$filtered = $items;
if (orderNo != "") {
$filtered = $filtered.filter("[data-orderNo*='" + orderNo + "']");
}else if(!fd && !td){
$items.removeClass('hiddenOrderNo');
}
$filtered = $filtered.filter(function () {
var date = $.datepicker.parseDate('mm/dd/yy', $(this).attr('data-dateOrdered'));
return (fd == null || date >= fd) && (td == null || date <= td);
});
$filtered.removeClass('hiddenOrderNo');
$items.not($filtered).addClass('hiddenOrderNo');
}
//显示某些内容,仅用于演示
$('.item').html(函数(){
返回$(this.attr('data-orderNo')+'-'+$(this.attr('data-dateOrdered'))
})
函数过滤器(){
var orderNo=$('#orderNumberFilter').val(),
fd=$(“#fromDateFilter”).datepicker('getDate'),
td=$(“#toDateFilter”).datepicker('getDate'),
$items=$(“.item”),
$filtered=$items;
如果(订单号!=“”){
$filtered=$filtered.filter(“[data orderNo*='”+orderNo+“]]”);
}否则如果(!fd&&!td){
$items.removeClass('hiddenOrderNo');
}
$filtered=$filtered.filter(函数(){
var date=$.datepicker.parseDate('mm/dd/yy',$(this.attr('data-dateOrdered'));
return(fd==null | | date>=fd)和&(td==null | | date)更干净。谢谢!还有一个问题-我将如何从查找数据属性改为查找div中的内容?我可以得到一个提示,其中包含我要使用以下命令搜索的文本:$(this).find(“p.partListing”).text()它是这样的吗?如果(partNo!=“”){$filtered=$filtered.$(this).find(“p.partListing”).filter(function(){return/+partNo+/.test(this.innerHTML);}否则如果(!fd&&!td){$items.removeClass('hiddenOrderNo');},},零件列表的示例内容是什么>,,,
其中我只想搜索文本,例如IMG####AC/D
function filter() {
var orderNo = $('#orderNumberFilter').val(),
fd = $("#fromDateFilter").datepicker('getDate'),
td = $("#toDateFilter").datepicker('getDate'),
$items = $(".item"),
$filtered = $items;
if (orderNo != "") {
$filtered = $filtered.filter("[data-orderNo*='" + orderNo + "']");
}else if(!fd && !td){
$items.removeClass('hiddenOrderNo');
}
$filtered = $filtered.filter(function () {
var date = $.datepicker.parseDate('mm/dd/yy', $(this).attr('data-dateOrdered'));
return (fd == null || date >= fd) && (td == null || date <= td);
});
$filtered.removeClass('hiddenOrderNo');
$items.not($filtered).addClass('hiddenOrderNo');
}
$('#orderNumberFilter').on('keyup', filter);
$('#fromDateFilter, #toDateFilter').datepicker({
onClose: filter
});