2010-03-12 92 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