Основываясь на предложении @ CoryCoolguy, одним из решений является удаление символов из текстового поля после их ввода путем проверки содержимого поля.
В этом решении используется валидатор регулярных выражений для поиска любых символов, которые не являютсячасть допустимого набора, затем замените их пустым символом.
textbox.addEventListener( "input", event => {
textbox.value = textbox.value.replace( /[^a-zA-Z0-9 ]/gm, '');
}, false);
textbox.addEventListener( "paste", event => {
textbox.value = textbox.value.replace( /[^a-zA-Z0-9 ]/gm, '');
}, false);
Используя событие input
, каждый раз, когда символ вводится или вставляется через панель Emoji Windows, значение текстового поля равносканируются и все символы, не соответствующие регулярному выражению, удаляются.
Добавление прослушивателя событий paste
будет отслеживать все, что вставлено из буфера обмена, и позволит вставить содержимое перед удалением любых нежелательных символов.Это означает, что если в буфере обмена есть сочетание действительных и недействительных символов, то действительные все равно будут вставлены.