我试图防止输入书写和插入特殊字符。 这将防止字符被写入,但不会阻止字符被插入。我该如何使用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>
答案 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>
答案 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 () {
....
....
}