防止文字区域出现特殊字符

时间:2019-02-13 11:23:48

标签: javascript textarea

我需要防止在文本区域中插入特殊字符。它应该可以在所有浏览器上使用。

我已尝试执行此操作,但不会选中“〜”,“ã”和“á”。在这种情况下,“ã”获得与“ a”相同的代码。

 	 $('#sms_text').keydown(function(e) {if((e.keyCode>64 && e.keyCode<91) || (e.keyCode>96 && e.keyCode<123) || e.keyCode==8)
 	 									    {}
 	 										else{e.preventDefault();}});
 	 $('#sms_text').keyup(function(e){if((e.keyCode>64 && e.keyCode<91) || (e.keyCode>96 && e.keyCode<123) || e.keyCode==8)
 	 										{}
 	 										else{e.preventDefault();}});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<div class="form-group" style="width:40%">
    <label for="exampleInputEmail1">Email address</label>
    <textarea class="form-control" id="sms_text"></textarea>
    <div class="text-right">
    <h6 class="badge badge-dark"><span id="count_message">0</span>/50</h6>
    </div>
 	 </div>

在那种特殊情况下,我应该期望能预防。

2 个答案:

答案 0 :(得分:0)

看看jQuery字母数字插件! enter link description here

//All of these are from their demo page
//only numbers and alpha characters
$('.sample1').alphanumeric();
//only numeric
$('.sample4').numeric();
//only numeric and the .
$('.sample5').numeric({allow:"."});
//all alphanumeric except the . 1 and a
$('.sample6').alphanumeric({ichars:'.1a'});

答案 1 :(得分:0)

let textAreaContainer = $('#sms_text');
textAreaContainer.keyup(function(e){
if (e != "") {
    if ( /[^\w\d]/.test(e)) {
        alert("Please enter only letter and numeric characters");
        return (false);
    } else { e.preventDefault()}
}
})

此表达式匹配 匹配[^ \ w \ d]下方列表中不存在的单个字符

  • \ w匹配任何单词字符(等于[a-zA-Z0-9_])
  • \ d匹配一个数字(等于[0-9])

或者可能是使用ur方法的解决方案,前提是如果

((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57) || k == 190 || k == 188)