用于输入字段验证的按键方法

时间:2017-04-17 05:26:04

标签: jquery

我试图进行简单的输入字段验证以限制一些特殊字符,我得到了以下解决方案。
但我无法理解这个三元运算符中发生了什么事情{{{ 1}}
任何人都可以解释一下吗?



var str = String.fromCharCode(e.charCode ? e.which : e.charCode);

$(document).ready(function(){
$('#textarea').keypress(function (e) {
        var regex = new RegExp("^[a-zA-Z0-9 ,.!?]+$");
        var str = String.fromCharCode(e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        else {
            alert("enter only valid string(123 abc , . ! ?)");
            e.preventDefault();
            return false;
        }
    })
});




2 个答案:

答案 0 :(得分:1)

String.fromCharCode将Unicode编号转换为字符。

var regex = new RegExp("^[a-zA-Z0-9 ,.!?]+$");它是一个正则表达式,用于检查输入的密钥是来自字母或数字还是句号,还是逗号或者!。

String.fromCharCode(e.charCode ? e.which : e.charCode);这会返回按键的键控代码或字符代码。

例如:var res = String.fromCharCode(65);返回A

if (regex.test(str)) {检查是否接受按下的按键。

答案 1 :(得分:1)

更好的解决方案是将此字符验证绑定到更多事件。

  • 按键

为了兼容浏览器,请在所有可能的事件属性中查找字符代码。

  • ,其
  • 则charCode
  • 键代码

我为 Enter 添加了一个例外,因为它是textarea,用户可能想要更改行。

$(document).ready(function(){
  $('#textarea').on("keypress paste",function (e) {
    var regex = new RegExp("^[a-zA-Z0-9 ,.!?]+$");
    var charCode = e.which || e.charCode || e.keyCode;
    
    if(charCode!=13){ // to allow [ENTER]
    
      var str = String.fromCharCode(charCode);
      if (regex.test(str)) {
        return true;
      }
      else {
        alert("enter only valid string(123 abc , . ! ?)");
        e.preventDefault();
        return false;
      }
    }
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label class="col-xs-12">Reason<span class="requiredField">*</span></label>
<textarea id="textarea"  rows="2"></textarea>