如何防止在输入字段中写入和粘贴特殊字符?

时间:2018-12-24 08:49:28

标签: javascript jquery

我试图防止输入书写和插入特殊字符。 这将防止字符被写入,但不会阻止字符被插入。我该如何使用JQuery?

 $('#first').keypress(function (e) {
    var txt = String.fromCharCode(e.which);
    if (!txt.match(/[A-Za-z0-9&. ]/)) {
        return false;
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="form" action="reg.php" method="POST" id="reg" onsubmit="return formSubmit();">
    <input type="text" name="first" id="first" required/>
    <input type="text" name="sec" id="sec" required />
</form>

6 个答案:

答案 0 :(得分:4)

您可以使用下面的REGEX防止出现特殊字符

var nospecial=/^[^*|\":<>[\]{}`\\()';@&$]+$/;

$('#first').keypress(function (e) {
    var txt = nospecial.test(e.val());
    if (!txt) {
        $('#first').val('');
        return false;
    }
});

答案 1 :(得分:2)

每个键都有唯一的keycode。您应该捕获keycode并对其进行验证。 This is a list of codes of keys

<input type="text" onkeypress="return checkEntry(event)" onpaste="return checkEntry(event)" onchange="return checkEntry(event)">

<script>
  function checkEntry(e) {
    var k;
    document.all ? k = e.keyCode : k = e.which;
    return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57));
    }
</script>

答案 2 :(得分:1)

只要您拥有JQuery,这里就是input mask插件供您考虑。您可以找到演示here

答案 3 :(得分:1)

您需要绑定到paste事件,并对字符串运行替换操作,以删除不需要的字符。此示例将允许粘贴,但会删除不允许的字符。

解决方案

$('#first').keypress(function (e) {
  var txt = String.fromCharCode(e.which);
  if (!txt.match(/[A-Za-z0-9&. ]/)) {
      return false;
  }
});

$('#first').bind('paste', function() {
  setTimeout(function() { 
    var value = $('#first').val();
    var updated = value.replace(/[^A-Za-z0-9&. ]/g, '');
    $('#first').val(updated);
   });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="first" />

注释

  • bind函数中,我将^添加到您的匹配组中,以匹配所有非这些字符。
  • 您可以将正则表达式更新为/a-z0-9&.\s/i\s表示空间(比实际空间可读性更高),i表示不区分大小写。
  • 如果要允许_个字符,可以使用\w代替A-Za-z0-9,在这种情况下,也可以使用\W来匹配相反的字符。 / li>

文档

https://developer.mozilla.org/en-US/docs/Web/Events/paste

答案 4 :(得分:1)

您可以尝试一下 并在此specialKeys aaray中添加要限制或不想限制的密钥

var specialKeys = new Array();
specialKeys.push(8); //Backspace
specialKeys.push(9); //Tab
specialKeys.push(46); //Delete
specialKeys.push(36); //Home
specialKeys.push(35); //End
specialKeys.push(37); //Left
specialKeys.push(39); //Right
function IsAlphaNumeric(e) {
    var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode;
    var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
    document.getElementById("error").style.display = ret ? "none" : "inline";
    return ret;
}
<input type="text" id="text1" onkeypress="return IsAlphaNumeric(event);" ondrop="return IsAlphaNumeric(event);" onpaste="return IsAlphaNumeric(event);" />
<span id="error" style="color: Red; display: none">* Special Characters not allowedspan>

答案 5 :(得分:0)

您可以使用onpaste事件。

$("#first").onpaste(function () {
   ....
   ....
}