Как в js сделать при вводе числа дату

Мне нужно когда вводится строка добалять точку. То есть пользователь вводить числа ставиться точка и получается дата.

12 => 12. => 12.12 => 12.12. => 12.12.2000

function pastedote(a){
    let b = a.value
    if(b.length == 2 )
        a.value = b + "."
    else if(b.length == 5)
        a.value = b + "."
}

попробывал так, но не получилось так как стереть невозможно, ставится постоянно точка.


Ответы (1 шт):

Автор решения: digital-mag

попробывал так, но не получилось так как стереть невозможно, ставится постоянно точка.

Стирать вполне возможно, не пресекая срабатывание события для тех клавиш, поведение которых не нужно переопределять. Например, вот этот код работает:

document.querySelector('input').addEventListener('keydown', function (event){

    if (event.key.length > 1) return;
    
    if (event.target.value.length < 10 && /\d/.test(event.key)){
        
        if (~[2,5].indexOf(event.target.value.length)){
         
         event.target.value += '.'   
        }
    }
    else{
        event.preventDefault()
    }
})

Полный пример можно посмотреть здесь.

PS:

Однако если вам нужно использовать подобный виджет для ввода даты, я бы посоветовал воспользоваться <input type="date"> либо готовым календарем. Например, я использую svelte-color-calendar. У него под капотом усовершенствованный color-calendar. На русском языке с его описанием вы можете ознакомится здесь. Так же на той же странице есть обзорная таблица сравнения с другими календарями.

Полный пример его использования можно увидеть по ссылке:

createCalendar(
    document.getElementById('app'), 
    {
        placeholder: '-',
        blank: true,
        selectedDate: new Date,         
        startMonth: new Date(2021, 11),
        endMonth: new Date(2030, 11),
        blank: true,
        selectInitialDate: false,
        onSelect: e => console.log(e)
    }
)
→ Ссылка