将“st,nd,rd,th”添加到jquery datepicker

如何添加st,nd,rd,th日期格式..即11月19日,或12月2日等。

目前,我有以下代码

$( "#datepicker" ).datepicker({ altField: "#alternate", altFormat: "DD, MM d ", minDate: +0 }); 

由于formatDate()没有该选项。

编辑:是的,你是对的,对不起,我的回答没有帮助你,我是新来的。 我希望这次有帮助:)

将onSelect函数添加到datepicker init,如下所示:

 $("#datepicker").datepicker({ altField: "#alternate", altFormat: "DD, MM d", minDate: +0, onSelect: function(dateText, inst) { var suffix = ""; switch(inst.selectedDay) { case '1': case '21': case '31': suffix = 'st'; break; case '2': case '22': suffix = 'nd'; break; case '3': case '23': suffix = 'rd'; break; default: suffix = 'th'; } $("#alternate").val($("#alternate").val() + suffix); } }); 

每次选择日期时,它都会在备用字段中添加后缀。

Chris West对于一个为所有整数生成序数的函数都有一个非常简短的定义。 在这个页面上,他甚至展示了如何轻松地使用他的函数将序数添加到字符串中的所有数字。

  // Get the ordinal suffix for the given int value var ordinalSuffix = function (val) { var mod = val % 10; if (mod === 1 && val !== 11) { return 'st'; } else if (mod === 2 && val !== 12) { return 'nd'; } else if (mod === 3 && val !== 13) { return 'rd'; } else { return 'th'; } }; 

根据语法规则,你不应该在显示日期时添加“th”,“nd”,“rd”和“st”,如“March 3”或“April 31,2003”。 您只在显示“3月6日”或“6月23日”时使用这些。

有关更多信息,请参阅此

在jqueryui repo上查看这个拉取请求: https : //github.com/jquery/jquery-ui/pull/438

这有帮助吗?

 do = day + ((20 - day >= 0) ? "th" : ["st","nd","rd"][(day % 10) - 1] || "th"); console.log(do); 

我意识到这是一个老问题,但我想我会发布我的解决方案,以防任何有相同问题的人发现这篇文章。 打开日历等时,此方法不会中断所选日期。这使用格式d {suffix} M yy即’2013年9月30日’

 $.datepicker.origParseDate = $.datepicker.parseDate; $.datepicker.parseDate = function(format, value, settings) { if ( $.isPlainObject(format) && format.hasOwnProperty('parse') && $.isFunction(format.parse) ) { return format.parse.call(this, value, settings, $.datepicker.origParseDate); } else { $.datepicker.origParseDate(format, value, settings); } }; $.datepicker.origFormatDate = $.datepicker.formatDate; $.datepicker.formatDate = function(format, date, settings) { if ( $.isPlainObject(format) && format.hasOwnProperty('format') && $.isFunction(format.format) ) { return format.format.call(this, date, settings, $.datepicker.origFormatDate); } else { $.datepicker.origFormatDate(format, date, settings); } }; $('.datepicker').datepicker({ dateFormat: { parse: function(value, settings, originalParseDate) { value = value.replace(/[az][^\s]+/, ''); return originalParseDate.call(this, 'd M yy', value, settings); }, format: function(date, settings, originalFormatDate) { date = originalFormatDate.call(this, 'd M yy', date, settings).split(' '); date[0] += (function(n) { n = (+n % 100).toString().split(''); if (n.length > 1 && n.shift() === '1' || +n[0] > 3) { return 'th'; } else { return ['th', 'st', 'nd', 'rd'][+n[0]]; } })(date[0]); return date.join(' '); } } }); 

dateFormat不使用“s”作为格式类型,因此在我通常添加的选项中 –

 dateFormat : "DD ds MM, yy", onSelect: function(dateText, inst) { var arrOrd = new Array('0','st','nd','rd','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','st','nd','rd','th','th','th','th','th','th','th','st'); var day = Number(inst.selectedDay); var suffix = arrOrd[day]; $(this).val($(this).val().replace(inst.selectedDay+"s",inst.selectedDay+suffix)); }