Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.05.2021, 14:34
Интересующийся
Отправить личное сообщение для alacka Посмотреть профиль Найти все сообщения от alacka
 
Регистрация: 17.04.2014
Сообщений: 11

Запретить ввод букв в input, не усложнил ли код ?
Здравствуйте, читал что новачки усложняют код, а так как я новичок
хотел спросить не усложнил ли я код, и какое решение попроще

Задача

в input разрешить вводить только цифры, буквы удалять при вводе

const maskDate = document.querySelector('.head-checker__mask-date');

maskDate.addEventListener('keyup', () => {
    let str = maskDate.value;
    let cur = "";
    
    for (let i = 0; i < str.length; i++){        
        if(!isNaN(str.charAt(i))) {
            cur += str.charAt(i);
        }
    }

    maskDate.value = cur;
})
Ответить с цитированием
  #2 (permalink)  
Старый 26.05.2021, 14:43
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

На самом деле всё "немного" сложнее.
Во первых, надо обрабатывать не 'keyup', а 'input', чтобы охватить всякие изменения, например копи-паст мышкой, драгндроп текста и прочая.
Во вторых, текст может редактироваться где-то в середине, и после поправки надо вернуть курсор на место (присвоение нового value перекидывает его в конец).
Может быть ещё что-то.

В общем, если это тебя для развития, то экспериментируй, если в проекте срочно понадобилось, лучше взять готовый.

Ну а удалить не-цифры проще регуляркой: const cur = maskDate.value.replace(/\D/g, '')

Последний раз редактировалось Alexandroppolus, 26.05.2021 в 14:46.
Ответить с цитированием
  #3 (permalink)  
Старый 26.05.2021, 14:47
Интересующийся
Отправить личное сообщение для alacka Посмотреть профиль Найти все сообщения от alacka
 
Регистрация: 17.04.2014
Сообщений: 11

Сообщение от Alexandroppolus Посмотреть сообщение
На самом деле всё "немного" сложнее.
Во первых, надо обрабатывать не 'keyup', а 'input', чтобы охватить всякие изменения, например копи-паст мышкой, драгндроп текста и прочая.
Во вторых, текст может редактироваться где-то в середине, и после поправки надо вернуть курсор на место (присвоение нового value перекидывает его в конец).
Может быть ещё что-то.

В общем, если это тебя для развития, то экспериментируй, если в проекте срочно понадобилось, лучше взять готовый.

Ну а удалить не-цифры проще регуляркой: const cur = maskDate.value.replace(/\D/g, '')

пока изучаю )) спасибо, буду думать



Ну а удалить не-цифры проще регуляркой: const cur = maskDate.value.replace(/\D/g, '')

блин только 1 строчка ))))))))

Последний раз редактировалось alacka, 26.05.2021 в 14:51.
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2021, 10:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от alacka
читал что новачки усложняют код
И еще не делают полные тестовые примеры...
Ты ведь только JS показал... А хтмля нету.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод в input с кнопки Artur_Hopf Общие вопросы Javascript 14 05.04.2018 15:37
Как вставить в input value ответный код ainur777 Общие вопросы Javascript 4 19.09.2014 16:46
Автозаполнение Input и ввод значений kote Events/DOM/Window 10 29.10.2013 20:21
Ввод в полускрытый input смещает div, в котором он находится Scepticus Элементы интерфейса 4 29.05.2013 16:50
Как запретить js код. Vladislav Общие вопросы Javascript 3 23.02.2013 17:03