繁体   English   中英

我有一个文本区域,应该只接受所选的字符

[英]I have a text area which should accept only selected characters

文本区域应仅接受数字,逗号,箭头键(键盘),空格,Ctrl + c,Ctrl + v,Ctrl + x,Ctrl + a,并且只能使用javascript。 以下是我的代码:

 <textarea onkeypress=' return validateKey(event)'></textarea> <body> <script type="text/javascript"> function validateKey(e){ var key= e.keyCode ? e.keyCode : e.charCode; console.log(key); if(key>47 && key <=57 || key>36 && key <=40 || key===44|| key===32 ||x|| key===8 || x|| key ===118 || key==99 || key === 120){ return true; } return false; } </script> </body> 

它适用于chrome,但在Firefox中,它使用与'a'和ctrl + a或cmd + a(mac)相同的键码,以便进行剪切,粘贴和复制。

有什么办法可以处理ctrl + a和'a'是两个diff字符。

只需添加一个if (!e.ctrlKey)的其他外部if 如果按下控制键,它将阻止其运行。

我已经找到了验证的方法

 <!DOCTYPE html> <html> <head> <title>Task</title> </head> <body> <textarea style="width: 300px;height: 100px" onkeypress=' return validateKey(event)'></textarea> <script type="text/javascript"> function validateKey(e) { var key = e.keyCode ? e.keyCode : e.charCode; console.log(key); if (key > 47 && key <= 57||(key > 36 && key <= 40) && !e.shiftKey || key === 44 || key == 17 || key === 32 || key === 8 || (key == 97 && e.ctrlKey) || (key == 120 && e.ctrlKey) || (key == 99 && e.ctrlKey) || (key == 118 && e.ctrlKey) || e.metaKey) { return true; } return false; } </script> </body> </html> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM