我们如何修改此代码以过滤日期(作为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;
});
答案 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;
});