代码之家  ›  专栏  ›  技术社区  ›  Herb Caudill

jquery-在带有空格键的链接上触发单击事件?

  •  9
  • Herb Caudill  · 技术社区  · 15 年前

    在大多数浏览器中, <input type="submit"> 将[空格键]和[输入]都视为单击,但 <a> 链接仅将[输入]视为单击。

    我的应用程序使用了许多格式化的链接来模拟按钮,因此习惯于点击按钮并按下[空格键]的用户将感到沮丧。

    jquery解决了这个问题:

    $("a.Button").die("keypress").live("keypress", function(e) {
        if (e.which == 32) {
            $(this).trigger("click");
            e.preventDefault();
        }
    });
    

    我的问题是:有理由不这样做吗?我有点不愿意在这样基本的东西上覆盖浏览器的默认行为,但是因为我已经在滥用链接标签使其看起来像一个按钮,至少这样我就不会再违背用户的期望了。

    2 回复  |  直到 14 年前
        1
  •  6
  •   Andy    15 年前

    我认为最重要的标准不是浏览器的行为,而是用户的预期反应。

    如果你通过将链接变成按钮来覆盖链接的显示,那么用户必须能够像对待一个真正的按钮那样对待这些“按钮”,否则你将用这种“学到的”行为来迷惑和激怒那些花了多年的用户。

        2
  •  0
  •   amelvin    15 年前

    有一些标准的可用性问题。

    我觉得“看起来”是关键。如果有人正在使用屏幕阅读器,他们将“看到”一个链接,并采取适当的行动。

    如果有人关闭了javascript,jquery函数(显然)将不会运行,他们也将获得链接行为。

    很明显你已经做了自我反省(!)过度使用按钮之类的链接,因此这是处理这两种情况的一种情况-屏幕阅读器和非javascript。

    如果您不能模拟这两种情况下的按钮行为(在链接上),那么您将为不同的人提供不同的体验-这是不使用该功能的一个很好的理由。空格键应该每次使用这些链接/按钮,或者不使用它们。