【问题标题】:Use JavaScript to order some dates [closed]使用 JavaScript 订购一些日期 [关闭]
【发布时间】:2014-10-05 17:51:39
【问题描述】:

我有一个 WordPress 插件“Ultimate WPQSF”,它在我的网站前端输出一个下拉列表,但据我所知,我无法选择按日期排序此列表。

在前端输出以下下拉列表

<select id="tdp-0" name="taxo[0][term]">
    <option value="august-2013">August 2013</option>
    <option value="august-2014">August 2014</option>
    <option value="december-2013">December 2013</option>
    <option value="march_2014">March 2014</option>
    <option value="may-2014">May 2014</option>
</select>

我想要做的是从这些选项中提取数据并按日期排序,然后按新顺序将其输入回选择中,这将是最晚的日期(2014 年 8 月)。处理后的期望结果如下

<select id="tdp-0" name="taxo[0][term]">
    <option value="august-2014">August 2014</option>
    <option value="may-2014">May 2014</option>
    <option value="march_2014">March 2014</option>
    <option value="december-2013">December 2013</option>
    <option value="august-2013">August 2013</option>
</select>

我知道一点 jQuery 和 JavaScript,但还不足以做这种高级的事情。任何建议将不胜感激。

【问题讨论】:

标签: javascript jquery wordpress


【解决方案1】:

不知道是不是march_2014的错字,如果不是,你必须修改代码来处理-和_

JSFiddle:http://jsfiddle.net/6xde9500/

//For adding capitalaizing the first letter-function to strings
String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

myMonths = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];

//Array that hold date objects
dateArray = new Array();

//Create date objects
function getDateObject(value){   

    montAndYear = value.split("-");

    date = new Date();

    //Set year and month 
    date.setYear(montAndYear[1]);

    //Since the months are stored by name, get the proper value from the myMoths array
    date.setMonth(myMonths.indexOf(montAndYear[0]));

    return date;
}

function updateSelection(){
    $("#tdp-0")
        .find('option')
        .remove()
        .end();

    for(i = 0; i < dateArray.length; i++){

        month = myMonths[dateArray[i].getMonth()];
        year = dateArray[i].getFullYear();

        $("#tdp-0").append('<option value="'+month+'-'+year+'">'+ month.capitalize() + ' ' + year +'</option>');

        if(i == 0){
            $("#tdp-0").val(month+'-'+year);
        }
    }
}

//Get all the values and sorts them
$("#tdp-0 option").each(function(){
    dateArray.push(getDateObject($(this).val()));
}).promise().done(function(){

    dateArray.sort(function(a,b){
        return a>b ? -1 : a<b ? 1 : 0;
    });

    updateSelection();
});

【讨论】:

  • DannyThunder,效果很好,感谢您的宝贵时间
猜你喜欢
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
相关资源
最近更新 更多