Текстовые блоки с акцентированными буквами и символами альтернативного кода - PullRequest
0 голосов
/ 11 июня 2019

В настоящее время я блокирую коды символов javascript, но он не блокирует акцентированные буквы и символы альт-кода, такие как è, á, ☺, ♥ и т. Д.

 $("#cstedit-addembossing").keypress(function(e) {

    var key = e.which;
    if(key > 32 && (key < 48 || key > 57) &&(key < 65 || key > 90) && (key < 97 || key > 122)) {
        return false;
    }
});  

Я бы хотел, чтобыне разрешать эти символы.

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

Вместо запрещенных символов в черном списке рассмотрите разрешенные символы белого списка. У меня был некоторый успех при использовании события input, которое , похоже, запускает даже после сочетаний клавиш ALT (например, для букв с акцентом).

Ниже разрешены только буквы и цифры. Буквы с ударением сначала преобразуются в буквы без акцента, но вы можете удалить эту часть, если она вам не нужна.

Я получил код для преобразования акцентированных символов из ответа Льюиса Даймона здесь .

$('#cstedit-addembossing').on('input', function() {

  let $this = $(this);

  let newVal = $this.val()
    .normalize('NFD').replace(/[\u0300-\u036f]/g, "")
    .replace(/[^0-9A-Za-z]+/g, '');

  $this.val(newVal);

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="cstedit-addembossing"></textarea>
1 голос
/ 11 июня 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...