修改此代码以删除"年"部分

时间:2018-06-05 07:54:59

标签: javascript jquery forms

我有这个代码,我必须删除它的年份部分,它是表单中日期值的格式化程序,它必须是" DD / MM"但它是" MM / DD / YYYY"有人能帮我吗?

<input type="text" name="datada" id="dtDataDa" placeholder="" value="%dtDataDa%"/>

这是我要修改的代码

var date = document.getElementById('dtDataDa');

function checkValue(str, max) {
    if (str.charAt(0) !== '0' || str == '00') {
        var num = parseInt(str);
        if (isNaN(num) || num <= 0 || num > max) num = 1;
        str = num > parseInt(max.toString().charAt(0)) && num.toString().length == 1 ? '0' + num : num.toString();
    };
    return str;
};

date.addEventListener('input', function (e) {
    this.type = 'text';
    var input = this.value;
    if (/\D\/$/.test(input)) input = input.substr(0, input.length - 3);
    var values = input.split('/').map(function (v) {
        return v.replace(/\D/g, '')
    });
    if (values[0]) values[0] = checkValue(values[0], 12);
    if (values[1]) values[1] = checkValue(values[1], 31);
    var output = values.map(function (v, i) {
        return v.length == 2 && i < 2 ? v + ' / ' : v;
    });
    this.value = output.join('').substr(0, 14);
});

date.addEventListener('blur', function (e) {
    this.type = 'text';
    var input = this.value;
    var values = input.split('/').map(function (v, i) {
        return v.replace(/\D/g, '')
    });
    var output = '';

    if (values.length == 3) {
        var year = values[2].length !== 4 ? parseInt(values[2]) + 2000 : parseInt(values[2]);
        var month = parseInt(values[0]) - 1;
        var day = parseInt(values[1]);
        var d = new Date(year, month, day);
        if (!isNaN(d)) {
            document.getElementById('result').innerText = d.toString();
            var dates = [d.getMonth() + 1, d.getDate(), d.getFullYear()];
            output = dates.map(function (v) {
                v = v.toString();
                return v.length == 1 ? '0' + v : v;
            }).join(' / ');
        };
    };
    this.value = output;
});

它使表格只插入实际数字,月份(1s部分)数字直到12,天数(第2部分)数字直到31和年份(第3部分)没有规则..我想只有月份和日期的一部分,以便一个例子看起来像&#34; 06/18&#34;

在这里你可以看到它https://codepen.io/user23xx/pen/VdarOL?editors=1010

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

从您共享的代码修改实际上非常简单。 在addEventListener

查找评论
date.addEventListener('input', function (e) {
    this.type = 'text';
    var input = this.value;
    if (/\D\/$/.test(input)) input = input.substr(0, input.length - 3);
    var values = input.split('/').map(function (v) {
        return v.replace(/\D/g, '')
    });
    if (values[0]) values[0] = checkValue(values[0], 31); //Put 31 instead of 12
    if (values[1]) values[1] = checkValue(values[1], 12); //Put 12 instead of 31
    var output = values.map(function (v, i) {
        return v.length == 2 && i < 2 ? v + ' / ' : v;
    });
    this.value = output.join('').substr(0, 7); //Update to 7 instead of 14 because full length you want is 7
});

接下来我们要更新模糊方法,如下所示

if (!isNaN(d)) {
            document.getElementById('result').innerText = d.toString();
            var dates = [d.getDate(),d.getMonth() + 1];//Remove the year part
            output = dates.map(function (v) {
                v = v.toString();
                return v.length == 1 ? '0' + v : v;
            }).join(' / ');
        };

<强>更新

date.addEventListener('blur', function (e) {
    this.type = 'text';
    var input = this.value;
    var values = input.split('/').map(function (v, i) {
        return v.replace(/\D/g, '')
    });
    var output = '';

    if (values.length == 2) {

      var dates = [values[0], values[1]];
      output = dates.map(function (v) {
        v = v.toString();
        return v.length == 1 ? '0' + v : v;
      }).join(' / ');
    };

    this.value = output;
});