基于substr范围的jquery过滤器

时间:2014-04-15 08:23:17

标签: jquery

我们如何修改此代码以过滤日期(作为yyyymmdd格式的substr),而不是在提供的范围内。

<select id="all">
    <option value="abc_20010315_Volvo_A">Volvo_A</option>
    <option value="defg_20020408_saab_B">saab_B</option>
    <option value="xz_20100120_Volvo_C">Volvo_C</option>
</select>
<label for="from">From</label>
<input type="text" id="from" name="from">
<label for="to">to</label>
<input type="text" id="to" name="to">
<button type="button" id="filter">Filter</button>

日期以范围选择器的yyyymmdd格式接收。

function Filter(val){
var from = $("#from").val();
var to = $("#to").val();
  $("#all > option").each(function() {
    $(this).show();
    if(?){
      $(this).hide();
    }
  }); 
}

我可以使用什么函数将字符串中的日期作为子字符串进行比较? 感谢。

我已经这样做但它仍有一些问题。

$( "#Filter" ).click(function( event ) {
    var from = $("#from").val();
    var match = from.match(/(\d{4})-(\d{2})-(\d{2})/);
    from = parseInt(match[1] + match[2] + match[3]);

    var to = $("#to").val();
    var match = to.match(/(\d{4})-(\d{2})-(\d{2})/);
    to = parseInt(match[1] + match[2] + match[3]);

    var regex = /\d{8}/i;
    $("#all> option").each(function(){
        $(this).show();
        var opt = this.value;
        var dateValue = parseInt(opt.match(regex));
        if(dateValue < from && dateValue > to){
          $(this).hide();
        }
    }); 
    $("#all")[0].selectedIndex = 0;

});

1 个答案:

答案 0 :(得分:0)

我已经解决了。对于任何可能遇到类似问题的人。 这是我的解决方案。

// implementation code for filter by date range
$( "#Filter" ).click(function( event ) {
    var from = $("#from").val();
    var match = from.match(/(\d{4})-(\d{2})-(\d{2})/);
    from = parseInt(match[1] + match[2] + match[3]);

    var to = $("#to").val();
    var match = to.match(/(\d{4})-(\d{2})-(\d{2})/);
    to = parseInt(match[1] + match[2] + match[3]);

    var regex = /\d{8}/i;
    $("#all > option").each(function(){
        $(this).show();
        var opt = this.value;
        var dateValue = parseInt(opt.match(regex));
        var test = dateValue < from || dateValue > to ;
        //alert("dateValue:"+dateValue+" test:"+test);
        if(test){
            $(this).hide();
        }
    }); 
    $("#all")[0].selectedIndex = 0;
});