Я пытаюсь разрешить только символы ASCII для своих полей ввода. Кажется, что тестовый скрипт не знает, что делать с символом TAB: https://jsfiddle.net/jp2code/5enmojb2/77/ Да, пока что 77 итераций. ...

-2
jp2code 12 Янв 2021 в 19:41

1 ответ

Лучший ответ

Вместо того, чтобы заменять определенные символы, я бы сказал, что вы действительно хотите заменить все, кроме действительных символов:

const ensureAscii = (x) => x.replace(/[^\x20-\x7e]/g, ' ');

$().ready(function() {
  $('input').bind('paste', function(e) {
    $(this).val(ensureAscii($(this).val()));
  });
});

Примере:

ensureAscii('abc\t\n123')
"abc  123"

Обновление: у вашей скрипки другая проблема. Переменная text пуста! Вам нужно получить вставленный текст из буфера обмена:

const ensureAscii = (x) => x.replace(/[^\x20-\x7e]/g, ' ');

$().ready(function() {
  $('input').bind('paste', function(e) {
    const text = event.clipboardData.getData('text');
    $(this).val(ensureAscii(text));
  });
});
0
Christian Fritz 12 Янв 2021 в 18:44