Я использую Javascript для автоматического добавления дефисов к номеру телефона. Необходимо изменить это, чтобы автоматически удалять дефисы, или найти новое исправление

Я нашел очень полезную часть JS из другого потока для автоматического переноса чисел, но побочным продуктом этого является то, что теперь они ввели 10 номеров (номер телефона в США), но если они хотят удалить и изменить его, у них будет также удалить дефисы. Я понимаю, что это не так уж важно, но меня это раздражает, и я хотел найти лучшее решение.

Приходит на ум несколько разных вариантов, просто не уверен, что возможно:

  1. Добавьте/измените мой код, чтобы при удалении он автоматически удалял дефисы при удалении своих номеров, чтобы они нажимали клавишу Backspace только 10 раз вместо 12.

  2. Имейте вид дефисов в текстовом поле, но на самом деле они не находятся в области ввода текста... так же, как, так сказать, «фоновое изображение». Я попытался сделать это с фоновым SVG для текстовой области, но мне не удалось решить проблему автоматического размещения телефонного номера вокруг фальшивых дефисов. Что касается этого возможного решения, я согласен с тем, что они будут там все время, даже до того, как что-то будет набрано, или появятся, как только они начнут набирать номер.

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

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

$('#phone').keyup(function(){
    $(this).val($(this).val().replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))
});
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку число форматируется только при вводе не менее десяти чисел, вы можете попробовать что-то вроде этого.

$('#phone').keyup(function(){
    if ( $(this).val().length < 10 ){
        $(this).val($(this).val().replace(/-/g, ''))
    }else{
        $(this).val($(this).val().replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))
    }
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type = "text" id = "phone">

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

neonfontana 16.03.2022 22:12

Другие вопросы по теме