使用javascript自动格式化输入日期

时间:2015-12-18 16:20:07

标签: javascript

我有一些javascript将用户输入自动格式化为SSN(ddd-dd-dddd) 我无法转换此脚本以支持日期格式(mm / dd / yyyy)

    var val = this.value.replace(/\D/g, '');
    var newVal = '';
    if (val.length > 4) {
        this.value = val;
    }
    if ((val.length > 3) && (val.length < 6)) {
        newVal += val.substr(0, 3) + '-';
        val = val.substr(3);
    }
    if (val.length > 5) {
        newVal += val.substr(0, 3) + '-';
        newVal += val.substr(3, 2) + '-';
        val = val.substr(5);
    }
    newVal += val;
    this.value = newVal;

是否有人能够解释这是如何工作的,并告诉我如何将其转换为我的日期格式?

1 个答案:

答案 0 :(得分:1)

您发布的代码会删除this.value中的所有非数字字符,然后根据字符串的长度在正确的位置添加“ - ”。

这是我尝试更容易理解的日期版本:

function insertString(originalString, newString, index) {
    return originalString.substr(0, index) + newString + originalString.substr(index);
}

function formatDate(dateString) {
    var cleanString = dateString.replace(/\D/g, ''), // Removes all non-numeric characters
        output = cleanString.substr(0, 8), // Limit to 8 digits
        size = dateString.length;

    if (size > 4)
        output = insertString(output, '/', 4);

    if (size > 2)
        output = insertString(output, '/', 2);

    return output;
}

然后在你的处理程序中你只需要这样做:

this.value = formatDate(this.value);