【问题标题】:I have a text area which should accept only selected characters我有一个应该只接受选定字符的文本区域
【发布时间】:2017-09-26 11:49:00
【问题描述】:

文本区域应仅接受数字、逗号、箭头键(键盘)、空格、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' 视为两个不同的字符。

【问题讨论】:

标签: javascript


【解决方案1】:

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

【讨论】:

  • 不走运,我总是把 e.ctrlKey 设为假!!
【解决方案2】:

我已经找到了验证的方法

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多