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以阻止粘贴!;)