Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
jQuery包含/不包含日期范围_Jquery_Jquery Ui_Jquery Ui Datepicker - Fatal编程技术网

jQuery包含/不包含日期范围

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>

我有一个带有订单号和订购日期等属性的项目列表。我的目标是将用户的所有订单加载到这些item div中,并允许它们进行筛选。当用户在文本字段中键入订单号时,我已将其正确过滤。现在,我尝试允许他们选择一个日期范围,并根据需要隐藏或显示div

下面是一个示例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
});