Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JQuery中按字符串日期对select下拉列表进行排序_Javascript_Jquery - Fatal编程技术网

Javascript 如何在JQuery中按字符串日期对select下拉列表进行排序

Javascript 如何在JQuery中按字符串日期对select下拉列表进行排序,javascript,jquery,Javascript,Jquery,我有一个选择下拉列表,它是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) { consol

我有一个选择下拉列表,它是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="&nbsp;">&nbsp;</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无效,请将其放在后面

常量选项=[ 01/08/2013, 01/11/2010, 01/12/2014, 全部的 02/01/2015, 02/03/2015, , 02/06/2016, 02/10/2013, 02/11/2011, ]; 函数str2DatestrD{ var from=strD.split/; var f=新日期从[2],从[1]-1,从[0]; 返回f; } 函数isValidDatestr{ return!isNaNDate.parsestr; } options.sort功能a、b{ 如果!IsValidDatatea&&IsValidDatateb{ 返回-1; } 如果IsValidDatatea&!IsValidDatateb{ 返回1; } var compA=str2Datea; var compB=str2Dateb; 返回compAcompB-1:0; }; 控制台。登录选项 尝试以下解决方案:

函数sortByDatea,b{ 如果a.indexOf/!=-1 | b.indexOf/!=-1{ var adate=a.split/; var bdate=b.split/; 如果adate[2]>bdate[2]{ 返回-1; }否则,如果adate[2]bdate[1]{ 返回-1; }否则,如果adate[1]bdate[0]{ 返回-1; }如果adate[0]当您向日期对象传递字符串时,当浏览器无法创建该字符串时,日期对象将为null。正如reporter所说的那样。尝试创建一个date对象,如果语句允许它删除任何不是日期的选项。我只想对字符串日期部分进行排序,非日期选项应该保留在最上面的顺序中可能这不是jquery的任务,我并不是说你不能在jquery中这样做,但是你在为一些你可以在其他技术中轻松做到的事情创建了太多的逻辑。我将使用一个数组来存储所有非日期部分,然后在排序后插入它。但我仍在寻找一个简单的方法来实现这一点。2010年12月29日将破坏你的功能