首页 > 解决方案 > Textarea 块重音字母和 alt 代码符号

问题描述

我目前正在阻止 javascript 字符代码,但它不会阻止重音字母和 alt 代码符号,例如 è、á、☺、♥ 等。

 $("#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;
    }
});  

我希望它不允许这些字符。

标签: javascripthtmlcssformstextarea

解决方案


考虑将您允许的字符列入白名单,而不是将您禁止的字符列入黑名单。input我使用该事件取得了一些成功,即使在 ALT 键组合之后(例如重音字母) ,它似乎也会触发。

下面,只允许使用字母和数字。重音字母首先转换为非重音字母,但如果您不想要它,您可以删除该部分。

我从Lewis Diamond的回答中得到转换重音字符的代码。

$('#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>


推荐阅读