В этом коде можно использовать только цифры - предпочтение должно быть разрешено вводить тире и / или скобки даже текст, такой как ext. но не адрес электронной почты.
Не могли бы вы помочь мне отредактировать этот код? Очень признателен.
<input type = "text" maxlength = "40" onkeypress = "return event.charCode >= 48 && event.charCode <= 57" required name = "phone" id = "phonecontactselection">



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужна функция для проверки только символа @, чтобы избежать этого, поэтому:
function avoidEmailPartCharacter(event) {
const code = event.keyCode || event.which;
if (code === 64) {
event.preventDefault();
}
}
затем вы передаете функцию обработчику ввода keypress, например:
<input type = "type" keypress = {avoidEmailPartCharacter(this)} />
это должно сработать
Предпочтительно переместить такую логику из шаблона в специальную функцию, однако, в случае, если вам действительно нужно сделать это встроенным, можно сопоставить входной символ с регулярным выражением следующим образом:
<input type = "text"
maxLength = "40"
onkeypress = "return !!String.fromCharCode(event.which || event.charCode).match(/[\dext\[\]\-]/)"
required
name = "phone"
id = "phonecontactselection"
>Удивительный! Большое спасибо. Ты лучший
@Tat С удовольствием!
Вы можете использовать контрольная работа и класс персонажа и перечислить свои символы, которым вы позволите сопоставить.
В этом случае сопоставьте один из [, ], символ a-z, точку или дефис:
[\][a-z.-]
<input
type = "text"
maxlength = "40"
onkeypress = "return /[\][a-z.-]/.test(String.fromCharCode(event.which || event.keyCode));"
required
name = "phone"
id = "phonecontactselection"
>
По сути, вы должны разрешить любой символ, но не @, не так ли?