我有一个文本区域,只能接受选定的字符

时间:2017-09-26 11:49:01

标签: javascript

文本区域应该只接受数字,逗号,箭头键(键盘),空格,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'是两个差异字符。

2 个答案:

答案 0 :(得分:0)

只需在您的其他if (!e.ctrlKey)之外添加if即可。如果按下控制键,这将阻止它运行。

答案 1 :(得分:0)

我找到了验证的方法

<!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>