javascript - 输入空格键和制表符的按键问题

标签 javascript html css input

所以我的应用程序中有一些表单,除了其中一个之外,它们似乎都工作得很好。

当我按空格键或 Tab 时,就像我有一个阻止默认值一样,它不会执行任何操作。

我尝试使用控制台的代码getEventListeners(node),它恢复正常。我还尝试使用 eventListener 来查看输入是否得到某些内容

let input = document.querySelector('#input')
input.addEventListener('keydown', e => {
  console.log(e.which);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input type="text" id="input" name="label" placeholder="Label" class="d-block w-100 mb-3 watch">
  <textarea name="comentario" placeholder="Deixe um comentário" class="d-block w-100 mb-3 watch"></textarea>
  <button class="btn btn-primary">Ok</button>
</form>

当我按空格键或选项卡时,控制台打印键码很好,但它们没有达到预期的效果。

这个应用程序是一个大型元素,可能会有一些代码干扰我的输入,但我已经检查了我能想到的所有可能性,所以如果有人有任何建议,他们将受到欢迎。

我仅使用 JavaScript、HTML 和 CSS。 库:jQuery、SVG.js、Pizzicato.js、Tuna.js、Wavesurfer.js

最佳答案

正如我在评论中提到的,我没有在测试中投入太多精力,但这个解决方案可以向您展示成为所需的摇滚明星的道路。

https://jsfiddle.net/h3o9x5nw/1/

您可以在 codes 数组中添加要测试的代码,以便行为可以继续,而不会破坏用户体验。如果您需要测试可能的 key 代码,而又不失去理智尝试通过在线表格查找某些内容,则可以使用 https://keycode.info/在 JS 中查找您的 keyCodes。

document.querySelector('#comentarios').addEventListener('keydown', e => {
            if (e.which == 32){
                e.preventDefault();
                e.path[0].value += String.fromCharCode(e.keyCode);
            }
        })

document.querySelector('#comentarios').addEventListener('keydown', e => {
            if (e.which != 32) return;

            e.preventDefault();
            e.path[0].value += String.fromCharCode(e.keyCode);

        })

关于javascript - 输入空格键和制表符的按键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57393983/

相关文章:

javascript - 页面加载后更改所选链接的图像源

javascript - Windows Phone 8.1 WinJS Appbar 禁用属性不起作用

javascript - Facebook 上的错误,API 错误代码 : 100, API 错误描述 : invalid parameter, 错误消息:链接 URL 格式不正确

javascript - Magento 2 不加载 CSS 和 JavaScript

javascript - 突出显示背景 Pane 大于链接对象且无填充的链接

css - 如何拉伸(stretch)背景图像以填充 div

javascript - 使用 AngularJS 从数组中添加值

javascript - 使用 postMessage 的 Iframe 间通信

javascript - 为什么函数参数没有通过 function.apply() 递归传递?

javascript - 带有屏幕调整大小的 HTML 菜单栏