Измените этот код, чтобы удалить часть "год" - PullRequest
0 голосов
/ 05 июня 2018

У меня есть этот код, и я должен удалить часть года, это форматтер для значений даты в форме, он должен быть «ДД / ММ», но это «ММ / ДД / ГГГГ», может кто-то помочьмне?

<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;
});

Он позволяет форме вводить только реальные цифры, для номеров месяца (часть 1) до12, для чисел дней (2-ая часть) до 31, а для года (3-й части) нет никаких правил. Я бы хотел, чтобы в нем была только часть месяца и дней, чтобы пример выглядел как «06/18"

Здесь вы можете увидеть это https://codepen.io/user23xx/pen/VdarOL?editors=1010

Спасибо за ваше время.

1 Ответ

0 голосов
/ 05 июня 2018

На самом деле довольно просто изменить код, которым вы поделились.Ищите комментарии в 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;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...