jQuery事件绑定与可访问性的想法 - 单击和按键

Ed *_*d . 5

只是一个简单的问题,我似乎做了很多:

$saveBtn.bind("click keypress", function(e)
{
    if (e.type != "keypress" || e.keyCode == 13)
    {
        // Do something...

        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

有没有更快捷的方法将"动作"侦听器绑定到按钮?我希望始终确保我的按钮与事件监听器同时触发点击和输入键...这似乎是一个相当普遍的事情想要做但在谷歌上找不到任何东西.有什么想法吗?

谢谢.

Dan*_*mms 5

单击事件实际上并不在每种情况下处理按键,而是使单击事件起作用的按钮。当您使用具有 tabindex 属性的 div 使其可通过键盘访问时,当您按 Enter 键时,单击处理程序将不会触发。

\n\n

超文本标记语言

\n\n
<div id="click-only" tabindex="0">Submit click only</div>\n<div id="click-and-press" tabindex="0">Submit click and press</div>\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

jQuery

\n\n
$("#click-only").click(function (e) {\n    addToBody(); // Only works on click\n});\n\n$("#click-and-press").bind("click keypress", handleClickAndPress(function (e) {\n    addToBody(); // Works on click and keypress\n}));\n\nfunction addToBody() {\n    $("body").append($("<p/>").text("Submitted"));\n}\n\nfunction handleClickAndPress(myfunc) {\n    return function (e) {\n        if (e.type != "keypress" || e.keyCode == 13) {\n            myfunc(e);\n        }\n    };\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,为了回答这个问题,我认为除了 yoda2k 的解决方案之外,没有更好的方法(在每种情况下都有效)。

\n


Hao*_*chi 3

通过绑定它将click完成工作,无需继续按下.

  • 这实际上只适用于具有本机键盘支持的元素,例如 A 标签和 Button 标签等等 - 例如,这不适用于 div 标签。 (6认同)