javascript - 如何防止使用键盘(尤其是空格键)提交表单

标签 javascript jquery keyboard

我有一个 Web 应用程序,在一个特定的屏幕上,我必须确保用户使用鼠标单击按钮,而不是仅按 Enter 或空格键。

我写了这段代码:

$('button').keydown(function (e) {
    if (e.which === 10 || e.which === 13 || e.which === 32) {
        return false;
    }
});

但是,这仅适用于 Enter。仍然可以通过按按钮上的空格来提交表单。我只是想知道是什么导致了这种不一致以及如何解决它?

编辑:

fiddle 示例:http://jsfiddle.net/billccn/3JmtY/1/ 。选中第二个复选框并在焦点位于按钮上时按 Enter 键将不会产生任何效果。如果我进一步禁用输入并将 keydown 捕获扩展到整个表单,则无法使用 Enter 来提交表单。

编辑2:

我确实有一个备份计划,用链接甚至普通 div 替换按钮,并使用单击事件以编程方式提交表单。但是,需要额外的工作才能使其看起来像一个按钮,因此我宁愿使用按钮。

最佳答案

刚刚发现:在 keyup 上处理空格 (32) 将阻止点击事件。

更新的 fiddle :http://jsfiddle.net/3JmtY/2/

关于javascript - 如何防止使用键盘(尤其是空格键)提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905236/

相关文章:

input - 为游戏选择良好的、不冲突的按键绑定(bind)

javascript - 从加载 jQuery 的表单中检索数据并将其传递到父页面

javascript - 迭代包含两个元素的数组会产生三个对象

javascript - 如何使用 jQuery 监听类型为“提交”的按钮上的单击事件?

c - 监控低级 Hook [C]

c# - 将整数列表从 JavaScript 传递到 C#——我得到了列表,但它是空的;表单数据结构不正确?

javascript - html 将文本放到 Canvas 上

javascript - AngularJS ng-show 和 ng-hide 不起作用

javascript - 更改顺序时 knockout Foreach 重复

visual-studio - Visual Studio 2010 中的滚动锁定错误