【问题标题】:jQuery Datepicker issue with one digit month no leading zerojQuery Datepicker 问题,一位数月份没有前导零
【发布时间】:2012-12-29 19:44:05
【问题描述】:
我的日期格式是一位数的月份(没有前导零),后跟两位数的日期和两位数的年份。
2013 年 1 月 1 日 = 10113
我正在尝试将具有正确格式的日期选择器附加到它,但它的格式不正确。
http://jsfiddle.net/S3KyX/1/
<input type="text" id="date" value="10113">
$("#date").datepicker({ dateFormat: 'mddy'});
当日期选择器弹出时,它的日期是 2003 年 10 月 11 日。
【问题讨论】:
标签:
jquery-ui
datepicker
date-format
【解决方案1】:
很遗憾,您的格式不起作用。如果您查看datepicker formatDate 的实现,您会看到m 将尝试匹配1 或2 位数字,因为它无法提前告诉您您的意思是1 月而不是10 月,
这个方法是这样调用的,getNumber('m'):
var getNumber = function(match) {
var isDoubled = lookAhead(match);
var size = (match == '@' ? 14 : (match == '!' ? 20 :
(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));
var digits = new RegExp('^\\d{1,' + size + '}');
var num = value.substring(iValue).match(digits);
if (!num)
throw 'Missing number at position ' + iValue;
iValue += num[0].length;
return parseInt(num[0], 10);
};
如您所见,“m”的大小为 2,因此它将匹配 2 位数字! 如有疑问,请在代码中设置断点,看看会发生什么(这就是我刚刚所做的,使用 chrome 开发人员工具)