2010-03-12 59 views
9

它在大多数浏览器中看起来像一个<input type="submit">将[空格键]和[输入]视为点击,但<a>链接仅将[输入]视为点击。jQuery - 在空格键的链接上触发点击事件?

我的应用程序使用一些链接格式化来模拟按钮,因此习惯于按Tab键并按[空格键]的用户将会感到沮丧。

的jQuery这一点解决了这个问题:

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

我的问题:有没有理由不这样做呢?我有点不情愿覆盖浏览器的基本默认行为,但由于我已经滥用链接标签,使它看起来像一个按钮,至少这样我没有违反用户的期望进一步。

+0

FWIW这是一个受众有限的应用程序。 Javascript是使用它的规定要求。它大量使用地图,图表,可编辑网格以及其他视觉和/或交互元素,而且我不清楚它是否完全可以通过屏幕阅读器使其可用。 – 2010-03-12 22:22:24

+0

这似乎不适用于生成具有href'javascript:WebForm_DoPostBackWithOptions(新的WebForm_PostBackOptions(“ctl00 $ main $ uclFind $ uclEntry $ btnGet”,“”“,true,”“, “”,false,true))' – 2010-09-16 09:03:26

回答

6

我认为维护最重要的标准不是浏览器的行为,而是用户的期望响应。

如果您已经通过将链接显示为按钮来覆盖链接的显示,用户必须能够像处理真正的按钮一样对待这些“按钮”,否则会混淆并刺激用户多年来,这种“学习”的行为。

0

存在标准的可用性问题。

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

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

很明显,您已经使用链接像按钮一样对灵魂进行搜索(!),因此它是处理这两种情况的一种情况 - 屏幕阅读器和非JavaScript。

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

+0

由于几个原因,我不同意 1)仅仅因为存在标准并不意味着它们需要应用于任何情况。在这种特殊情况下,如果他遵循了你的建议,那么他会预测每个用户的预期响应,而不仅仅是那些选择退出JS的少数人。 2)你还假​​设用户宁愿让它在* no *系统上工作,而不仅仅是* some *系统。我可以看到这是客户端应用程序的问题,但在网络上,出于所有实际目的,网页几乎总是以不同的方式呈现。用户期望是这样的。 – dclowd9901 2010-03-12 16:32:03

+0

够公平 - 屏幕阅读器怎么样,他们可以忽略吗? – amelvin 2010-03-12 22:01:50