Javascript 防止在文本字段中输入某些字符

Javascript 防止在文本字段中输入某些字符,javascript,html,css,Javascript,Html,Css,我尝试只允许在文本框中输入以下字符: A到Z大写和小写、ñ和ñ以及空格。Onkeyup在运行以下功能时: FieldOnKeyUp(el) { !(/^[A-zÑñ-\s]*$/i).test(el.value)?el.value = el.value.replace(/[^A-zÑñ-\s]/ig,''):null; } 我所做的不好之处在于,字段仍然接受以下特殊字符: ` ^ _ \ ] and [ 有人对此有什么看法吗?问题在于正则表达式: [^A-zÑñ-\s]/ig ^--

我尝试只允许在文本框中输入以下字符:

A
Z
大写和小写、
ñ
ñ
以及空格。Onkeyup在运行以下功能时:

FieldOnKeyUp(el) { !(/^[A-zÑñ-\s]*$/i).test(el.value)?el.value
= el.value.replace(/[^A-zÑñ-\s]/ig,''):null; }
我所做的不好之处在于,字段仍然接受以下特殊字符:

` ^ _ \ ] and [

有人对此有什么看法吗?

问题在于正则表达式:

[^A-zÑñ-\s]/ig
    ^---- problem is here: you need to change to an uppercase Z
您已经设置了
/i
忽略大小写标志,但是您还设置了
a-z
-即大写a到小写z的字符范围。当前正在接受的、您不想要的额外字符(“[”,等等)都位于大写字母Z和小写字母a之间。请尝试将其更改为
a-Z
,看看会发生什么


另外,请注意,用户可能通过粘贴(通过主菜单或右键单击菜单)输入无效字符,按键事件处理程序无法捕捉到这些字符。

正则表达式中存在问题:

[^A-zÑñ-\s]/ig
    ^---- problem is here: you need to change to an uppercase Z
您已经设置了
/i
忽略大小写标志,但是您还设置了
a-z
-的字符范围,即从大写字母a到小写字母z。当前接受的您不想要的额外字符(“[”)都位于大写字母z和小写字母a之间。尝试将其更改为
a-z
,看看会发生什么


另外,请注意,用户可能通过粘贴(通过主菜单或右键单击菜单)输入无效字符,按键事件处理程序将无法捕捉到这些字符。

将代码部分更改为如下所示,请参见

FieldOnKeyUp(el) { !(/^[a-zA-ZÑñ-\s]*$/i).test(el.value)?el.value 
= el.value.replace(/[^a-zA-ZÑñ-\s]/ig,''):null; } 

并且没有得到您的实际需求。将插入符号
^
放入
[
]
将使目标字符串不允许字母表。但是根据您的编码,我只是修改了不正确的正则表达式模式。

将您的代码部分更改为以下内容,请参见

FieldOnKeyUp(el) { !(/^[a-zA-ZÑñ-\s]*$/i).test(el.value)?el.value 
= el.value.replace(/[^a-zA-ZÑñ-\s]/ig,''):null; } 

并且没有得到您的实际需求。将插入符号
^
放在
[
]
将使目标字符串不允许使用字母表。但根据您的编码,我刚刚修改了不正确的正则表达式模式。

是的,我还运行了onBlur以阻止粘贴!;)是的,我也运行了onBlur以阻止粘贴!;)