как мы можем изменить этот код, чтобы отфильтровать даты (как substr в формате yyyymmdd), кроме как в указанном диапазоне.
<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;
});
Я решил это. Для тех, кто может столкнуться с подобной проблемой. Вот мое решение.
// 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;
});