我使用以下jquery脚本将日期添加到列表框中,一切正常,但我无法对列表框进行排序。
我使用了以下脚本行来约会但它不起作用。
var sortedList = $.makeArray($("#lstVisitDates option")).sort(function (a, b)
{ return Date.parse($(a).text()) < Date.parse ($(b).text()) ? -1 : 1; });
jQuery脚本
function checkValue(el) {
var txt = $("span[id$=spVisitDates] input[type=text]");
var svc = $(txt).val()
var lst = $('#lstVisitDates');
var options = $('#lstVisitDates option');
var alreadyExist = false;
$(options).each(function () {
if ($(this).val() == svc) {
alert("Item alread exists");
alreadyExist = true;
return;
}
});
if (!alreadyExist)
$(lst).find("option").attr("selected", false);
$(lst).append('<option value="' + svc + '" selected="selected">' + svc + '</option>');
var sortedList = $.makeArray($("#lstVisitDates option")).sort(function (a, b) { return Date.parse ($(a).text()) < Date.parse ($(b).text()) ? -1 : 1; });
// Clear the options and add the sorted ones
$(lst).empty().html(sortedList);
return false;
}
日期采用以下格式;
01-四月-2013
04日至2014
渲染后的Html
<select id="lstVisitDates" style="width:220px;" multiple="multiple" name="ctl00$ContentPlaceHolder1$tabContainer$tabScopes$Scopes$lstVisitDates" size="4">
<option value="15-Apr-2014"></option>
<option value="02-Apr-2014"></option>
<option selected="selected" value="08-Apr-2014"></option>
</select>
增加:
这样可以正常工作,但它不会将月份和年份排序。 var sortedList = $ .makeArray($(“#lstVisitDates option”))。sort(function(a,b){return $(a).text()&lt; $(b).text()? - 1:1 ;});
答案 0 :(得分:0)
您的代码中存在两个漏洞
.val()
代替.text()
。NAN
。Jquery代码:
//module to parse the date "dd-mmm-yyyy"
function parseDMY(s) {
return new Date(s.replace(/^(\d+)\W+(\w+)\W+/, '$2 $1 '));
}
$("#lstVisitDates").html($("#lstVisitDates option").sort(function (a, b) {
return parseDMY($(a).val()) < parseDMY($(b).val()) ? -1 : 1;
}));
现场演示:
http://jsfiddle.net/dreamweiver/w3jfF/91/
快乐编码:)