我有一个输入日期的文本输入字段。由于各种原因,我无法使用datepicker。我希望能够以任何格式输入日期,例如d / m / yy或dd / mm / yy或dd / mm / yyyy ......等等
输入其中一种格式并标签后,我希望将文本值(假设输入有效)设置为dd / mm / yyyy格式的输入日期。因此,例如,如果您已输入1/3/14,我希望将文本设置为01/03/2014。
到目前为止,我已经达到了这个目标,但这似乎并不合适: -
$('.someDate').on("blur", function (event) {
var dateRegEx = '^(?:(1[0-2]|0?[1-9])[- /.](3[01]|[12][0-9]|0?[1-9])|(3[01]|[12][0-9]|0?[1-9])[- /.](1[0-2]|0?[1-9]))[- /.](?:[0-9]{2})?[0-9]{2}$';
var day = 0;
var month = 0;
var year = 0;
var matchArray = $(this).val().match(dateRegEx);
month = matchArray[0];
day = matchArray[1];
year = matchArray[2];
//work out what is the year, month, date etc and set the input text to this
});
非常感谢任何帮助
答案 0 :(得分:0)
我用不同的方法为你的问题提供了一个工作小提琴,在我眼中不那么复杂。首先,我尝试获取日期分隔符。然后我按日期分隔符分割日期并形成一个新日期。工作小提琴:http://jsfiddle.net/2dVwW/
HTML:
<input id="date" type="text" value="01.03.15" />
<button id="transform">Transform</button>Date formatted:<span id="dateFormatted"></span>
JavaScript的:
$('#transform').click(function () {
var date = $('#date').val();
var sepRegEx = '(?:[- /.])';
var sepArray = date.match(sepRegEx);
if (!sepArray) {
alert("Unknown seperator");
return false;
}
var sep = sepArray[0];
var dateArray = date.split(sep);
var month = dateArray[0];
var day = dateArray[1];
var year = dateArray[2];
if (month.length == 1) {
month = '0' + month;
} else if (month.length != 2) {
alert("Wrong month format");
return false;
}
if (day.length == 1) {
day = '0' + day;
} else if (month.length != 2) {
alert("Wrong day format");
return false;
}
if (year.length == 2) {
year = '20' + year;
} else if (year.length != 4) {
alert("Wrong year format");
return false;
}
var dateFormatted = day + '/' + month + '/' + year;
$('#dateFormatted').text(dateFormatted);
});