Javascript jQuery日期选择器将输入重置为今天

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

我有一个文本输入,用户在其中输入出生日期。他们可以使用附带的jQuery日期选择器,也可以自己以mmddyy、mm/dd/yy或mm-dd-yy格式输入它,年份可以是2位数或4位数。我手动将其格式转换为mm/dd/yyyy

到目前为止,只要用户不按enter键,我的当前代码就可以工作。如果是,并且框的格式不是mm/dd/yy或mm/dd/yyyy,则日期选择器会将值更改为今天的日期。有没有办法防止日期选择器像这样覆盖日期

以下是我的JS代码:

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链接的编辑。