Javascript 只允许数字和字母输入字符串

Javascript 只允许数字和字母输入字符串,javascript,html,regex,validation,input,Javascript,Html,Regex,Validation,Input,在我的page.php上,我试图避免输入除数字和带有输入字符串的字母以外的任何标记: <input type="text" id="input"> 或者这个: $(function(){ $("#input").keypress(function(event){ var ew = event.which; if(ew == 32) return true; if(48 <= ew &&a

在我的
page.php
上,我试图避免输入除数字和带有输入字符串的字母以外的任何标记:

<input type="text" id="input"> 
或者这个:

$(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;
    });
});

但是我想避免在
page.php
中使用
html
编写额外的代码。我试图弄清楚,是什么原因导致使用给定的方法输入插入的值被阻塞

一种验证方法是在
输入
元素上使用
模式
属性

MDN:

就你而言:

<input type="text" pattern="[a-zA-Z0-9]*">

您可以使用一个脚本来代替javascript<代码>模式将允许您为输入指定所需的模式,
所需
将使输入成为所需。两者都必须
评估
,才能提交表格


会告诉您可能错过事件参数吗

在3种浏览器中,没有jQuery的情况下,我的工作方式如下:

函数CLSALOONLY(e){//只接受字母数字,不接受特殊字符
var regex=new RegExp(“^[a-zA-Z0-9]+$”;
var str=String.fromCharCode(!e.charCode?e.which:e.charCode);
if(正则表达式测试(str)){
返回true;
}
e、 预防默认值();
返回false;
}
函数clsAlphaNoOnly2(){//只接受字母数字,不接受特殊字符
return clsalphanooly(this.event);//window.event
}

如果您确实不想使用Regex方法作为下面的注释,那么您可以使用以下简单代码:

document.querySelector(“输入#测试输入”).addEventListener(“输入”,函数(){
const allowedCharacters=“0123456789AzertYOUPIOPQSDFGHJKLMWXCVBNAzertYOUPIOPQSDFGHJKLMWXCVBN”//您可以用同样的方法添加任何其他字符
让newValue=“”;
this.value.split(“”).forEach(函数(char){
if(在数组中(char,allowedCharacters.split(“”))newValue+=char;
});
this.value=newValue;
});
_数组中的函数(元素,数组){
设isIn=false;

对于(var i=0;iwell enter是键13,您不允许它,可以使用paste.FYI绕过代码,
pattern=“^[a-zA-Z0-9]+$”
=
pattern=“[a-zA-Z0-9]+”
,因为后者被转换为
^(?[a-zA-Z0-9]+)$
pattern。谢谢,我已经更改了它。@离开我的草坪你好,是的,我没有注意到我必须清理键入的文本以进行输入,因为pattern只对“必需”有用警报,但将允许标记字符串在textbox或检查控制台您的日志中的错误,顺便说一句,IE中不存在模式。应该有一些onpaste修复程序,但为了简单起见,根据Hello阻止了它,确保这种方式很好,使用“必需”作为错误文本的警报,但我必须清除输入的键入文本
<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)" />
<input type="text" pattern="[a-zA-Z0-9]*">