我试图避免在我的 page.php
上输入除数字和字母以外的任何标记和输入字符串:
<input type="text" id="input">
来自这个答案only allow English characters and numbers for text input <input type="text" id="input" class="clsAlphaNoOnly">
:
$(document).ready(function () {
$('.clsAlphaNoOnly').keypress(function (e) { // Accept only alpha numerics, no special characters
var regex = new RegExp("^[a-zA-Z0-9 ]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
});
})
或者这个:
$(function(){
$("#input").keypress(function(event){
var ew = event.which;
if(ew == 32)
return true;
if(48 <= ew && ew <= 57)
return true;
if(65 <= ew && ew <= 90)
return true;
if(97 <= ew && ew <= 122)
return true;
return false;
});
});
在这两种情况下,字符串都是清晰的,但我使用了两种类型的按钮点击输入 $("#btn").click(function()
处理输入和$(document).keypress(function(e)
点击键盘上的回车键进行相同的输入。由于某种原因,如果我包含此方法以避免字符串中出现额外标记,则按回车键将不允许输入插入的值。
这种方式工作正常:
<input type="text" id="input" onkeypress="return (event.charCode >= 65 && event.charCode <= 90) || (event.charCode >= 97 && event.charCode <= 122) || (event.charCode >= 48 && event.charCode <= 57)" />
但我想避免使用 html
的额外代码在page.php
.我试图弄清楚,是什么导致使用给定方法阻止输入插入值
最佳答案
会告诉你可能会错过事件参数吗?
在没有 jQuery 的情况下,我在 3 种浏览器中的工作方式如下:
function clsAlphaNoOnly (e) { // Accept only alpha numerics, no special characters
var regex = new RegExp("^[a-zA-Z0-9 ]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
}
function clsAlphaNoOnly2 () { // Accept only alpha numerics, no special characters
return clsAlphaNoOnly (this.event); // window.event
}
<input type="text" id="input" onkeypress="clsAlphaNoOnly(event)" onpaste="return false;">
<input type="text" id="input" onkeypress="clsAlphaNoOnly2()" onpaste="return false;">
关于javascript - 只允许数字和字母输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698005/