Javascript jQuery日期选择器将输入重置为今天
我有一个文本输入,用户在其中输入出生日期。他们可以使用附带的jQuery日期选择器,也可以自己以mmddyy、mm/dd/yy或mm-dd-yy格式输入它,年份可以是2位数或4位数。我手动将其格式转换为mm/dd/yyyy 到目前为止,只要用户不按enter键,我的当前代码就可以工作。如果是,并且框的格式不是mm/dd/yy或mm/dd/yyyy,则日期选择器会将值更改为今天的日期。有没有办法防止日期选择器像这样覆盖日期 以下是我的JS代码:Javascript jQuery日期选择器将输入重置为今天,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我有一个文本输入,用户在其中输入出生日期。他们可以使用附带的jQuery日期选择器,也可以自己以mmddyy、mm/dd/yy或mm-dd-yy格式输入它,年份可以是2位数或4位数。我手动将其格式转换为mm/dd/yyyy 到目前为止,只要用户不按enter键,我的当前代码就可以工作。如果是,并且框的格式不是mm/dd/yy或mm/dd/yyyy,则日期选择器会将值更改为今天的日期。有没有办法防止日期选择器像这样覆盖日期 以下是我的JS代码: var datebox = $('#applican
var datebox = $('#applicant_dob');
datebox.datepicker({
constrainInput: false,
changeYear: true,
changeMonth: true,
showOn: "focus",
dateFormat: "mm/dd/yy",
yearRange: "-100:+0",
showOptions: { direction: "down" },
onClose: function(e, c) {
var d = $(this);
datepickerOnClose(e, d);
}
});
function datepickerOnClose(e, d){
var changeFlag = true;
if(/^(\d{2})[\/](\d{2})[\/](\d{4})$/.test(e)){
changeFlag = false;
}
//change yy to yyyy if needed
//(assumes date is in mmddyy, mm/dd/yy, or mm-dd-yy format
if(/^(\d{2})[\/-]?(\d{2})[\/-]?(\d{2})$/.test(e)){
var yy = e.substr(e.length - 2, 2);
var yyyy = yy >= 15 ? 19 + yy : 20 + yy;
e = e.substring(0, e.length - 2) + yyyy;
d.val(e);
}
//convert to mm/dd/yyyy
if(/^\d{8}$/.test(e)){
d.val(e.slice(0, 2) + '/' + e.slice(2, 4) + '/' + e.slice(4, 8));
changeFlag = true;
}else{
if(/^(\d{4})[\/-](\d{2})[\/-](\d{2})$/.test(e)){
d.val(e.replace(/^(\d{4})[\/-](\d{2})[\/-](\d{2})$/, "$2/$3/$1"));
changeFlag = true;
}else{
if(/^(\d{2})-(\d{2})-(\d{4})$/.test(e)){
d.val(e.replace(/^(\d{2})-(\d{2})-(\d{4})$/, "$1/$2/$3"));
changeFlag = true;
}
}
}
if(changeFlag){
d.change();
}
}
datebox.on('keypress', function(event){
if(event.which == 13){ //'enter' key
console.log('fired');
datepickerOnClose($(elm).val(), $(elm));
$(elm).focusout();
}
});
编辑:
JSFIDLE:试着输入101010。例如,目标是将其自动更正为2010年10月10日
我要提到的是,这种情况只会在您第一次输入日期后发生一次。在你刷新之前,它可以正常工作。
找不到404 JSFIDLE,请创建一个\好的,我会设置一个。这可能需要一点时间;我从来没有使用过jsfiddle,所有这些都会钩住一个包含很多移动部件的更大的应用程序,因此很难确定我需要什么和不需要什么。检查你的浏览器控制台,我错了。检查对新JSFIDLE链接的编辑。