jQuery datepicker将输入重置为今天

时间:2014-09-22 18:37:10

标签: javascript jquery datepicker

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

我目前的代码到目前为止,只要用户没有按Enter键。如果他们这样做,并且该框的格式不是mm / dd / yy或mm / dd / yyyy,则datepicker会将值更改为今天的日期。有没有办法让日期选择器像这样覆盖日期?

这是我的整个事情的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();
    }
});

编辑:

  1. jsfiddle:http://jsfiddle.net/41yr3y3n/6/(尝试输入101010作为示例,目标是将其自动更正为10/10/2010)
  2. 我应该提到,这只会在您第一次输入日期后发生一次。之后它会正常工作,直到你刷新。

0 个答案:

没有答案