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

时间:2011-11-16 06:48:49

标签: javascript html css

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

AZ首都和小写,Ññ以及空格。 Onkeyup on运行以下功能:

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

我所做的最糟糕的事情是该字段仍然接受以下特殊字符:

` ^ _ \ ] and [

有没有人对此有所了解?

2 个答案:

答案 0 :(得分:2)

问题在于你的正则表达式:

[^A-zÑñ-\s]/ig
    ^---- problem is here: you need to change to an uppercase Z

您已设置/i忽略大小写标记,但您还设置了A-z的字符范围 - 即大写字母A到小写字母z。当前正在接受的您不想要的额外字符(“[”等)都落在大写字母Z和小写字母a之间。尝试将其更改为A-Z,看看会发生什么。

另请注意,您的用户可能会通过粘贴(通过主菜单或右键菜单)输入无效字符,而关键事件处理程序也无法捕获该字符。

答案 1 :(得分:1)

将您的代码部分更改为以下内容,然后查看

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

并没有得到你的实际要求。将插入符^放在[]中会使目标字符串不允许使用字母表。但根据你的编码,我只是修改了错误的正则表达式模式。