【问题标题】:How to make JavaScript block the 'space key' inside a textbox如何使 JavaScript 阻止文本框中的“空格键”
【发布时间】:2016-11-15 15:50:09
【问题描述】:

首先,我已经尝试过this solution,但它对我不起作用,除非我将脚本放在 HTML 页面中(我没有这样做,因为我有一个包含所有脚本的页面)。另一个可行但我不明白的解决方案是:

<input type="password" id="pwd" required pattern=".{8,16}" title="8 characters minimun, 16 characters maximum" name="fpwd" placeholder="Password" size = "13" onkeypress="return (event.keyCode != 32&&event.which!=32)>

那么,问题是:为什么第一个解决方案只有在脚本位于 HTML 页面中时才有效?

【问题讨论】:

  • 您可能需要检查此输入的事件处理程序上的 keyCode。既然你提到你有一个 js,我想可能有一个处理程序
  • 第二种解决方案根据是否按下空格键返回真或假
  • 请发布不起作用的“此解决方案”(适当引用),这样您的问题就是独立的。由于您不了解(当前仅发布)示例中的代码在做什么,请在 MDN 上查找这些事件。
  • @WinterSoldier Ops,我认为我在 JS 文件中没有处理程序:s

标签: javascript passwords onkeypress


【解决方案1】:

每次用户在文本字段中输入字符时,都会执行onkeypress 事件处理程序。

输入字符的键码根据环境(浏览器)存储在事件的keyCodewhich 参数中。

如果字符代码等于 SPACE 的键代码 (32),则事件处理程序返回 false,这会导致浏览器关闭事件,即阻止它将键入的字符添加到输入字段。

输入此 sn-p 以查看不同的键码:

&lt;input onkeypress="return console.log(event.keyCode || event.which), (event.keyCode != 32 &amp;&amp; event.which != 32)" /&gt;

【讨论】:

  • 哦,我明白了!这就是为什么我必须仔细检查 keyCode 和 which 的值不是 32 的原因。我试图在互联网上搜索一些东西,但“哪个”这个词让我很困惑。我正在检查其他答案,如果我了解如何使第一个解决方案适用于 JS 文件,我会这样做,否则我将使用它并将此答案标记为已接受。现在,谢谢!
  • @MC23 查看MDN page on the KeyboardEvent 了解更多信息!
  • 呃,我搜这个的时候没找到,谢谢。我现在完全明白了:)
【解决方案2】:

这样的事情怎么样:

document.getElementById("pwd").addEventListener('keydown', function (event)
{
    // if the keyCode is 32 ( space key was pressed )
    if (event.keyCode === 32) {
        // prevent default behaviour
        event.preventDefault();
        return false;
    }
});

工作小提琴:https://jsfiddle.net/a7yprnjd/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 2020-02-11
  • 2018-08-04
  • 1970-01-01
相关资源
最近更新 更多