我有一个选择下拉菜单,格式为 dd/MM/yyyy 日期格式,但它也包含一个非日期选项。排序时如何取消非日期选项?
排序功能:
function str2Date(strD){
var from = strD.split("/");
var f = new Date(from[2], from[1] - 1, from[0]);
return f;
}
$("#dateSelect option").sort(function(a, b) {
console.log($(a).val());
var compA = str2Date($(a).val());
var compB = str2Date($(b).val());
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
});
日期选择:
<select id='dateSelect'>
<option value="All">All</option>
<option value=" "> </option>
<option value="01/08/2013">01/08/2013</option>
<option value="01/11/2010">01/11/2010</option>
<option value="01/12/2014">01/12/2014</option>
<option value="02/01/2015">02/01/2015</option>
<option value="02/03/2015">02/03/2015</option>
<option value="02/06/2016">02/06/2016</option>
<option value="02/10/2013">02/10/2013</option>
<option value="02/11/2011">02/11/2011</option>
</select>
最佳答案
如果A无效但B有效,则将其放在前面。 如果A有效但B无效,则将其放在后面。
const options = [
"01/08/2013",
"01/11/2010",
"01/12/2014",
"All",
"02/01/2015",
"02/03/2015",
" ",
"02/06/2016",
"02/10/2013",
"02/11/2011",
];
function str2Date(strD) {
var from = strD.split("/");
var f = new Date(from[2], from[1] - 1, from[0]);
return f;
}
function isValidDate(str) {
return !isNaN(Date.parse(str));
}
options.sort(function (a, b) {
if (!isValidDate(a) && isValidDate(b)) {
return -1;
}
if (isValidDate(a) && !isValidDate(b)) {
return 1;
}
var compA = str2Date(a);
var compB = str2Date(b);
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
});
console.log(options);
关于javascript - 如何在 JQuery 中按字符串日期对选择下拉列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49052055/