好吧,我決定寫我自己的解決方案,在所有主要工作瀏覽器(Safari除外,但稍後更多)。基本上,它的工作方式是將一個類分配給表單中最後一個「tab-able」元素,通常是提交按鈕,稱爲「lastInForm」。簡單的HTML應該是這樣的:
<form action="action.php">
<fieldset><input id="input1" name="input1" type="text" placeholder="text here" /></fieldset>
<fieldset><input id="input2" name="input2" type="text" placeholder="text here" /></fieldset>
<fieldset><input id="input3" name="input3" type="text" placeholder="text here" /></fieldset>
<button class="lastInForm" type="submit">I'm last</button>
</form>
使用最新版本的jQuery,我聽爲.lastInForm元素的keydown事件,並檢查是否有鍵代碼9,對應於製表鍵。當我收到該事件時,我查找最接近的表單元素,查找表單中的第一個輸入元素,並將焦點應用於該表單。
像這樣:
$(document).ready(function(evt){
$('.lastInForm').live('keydown', function(evt){
if(evt.keyCode === 9){
evt.preventDefault();
var form = $(this).closest('form');
var input = $('input:first', form);
if(input !== undefined){
input.focus();
}
}
});
});
...整齊地產生一種形式,你可以通過使用Tab鍵的元素循環。
現在我前面提到它可以在除Safari之外的所有主要瀏覽器上使用。原因是Safari默認情況下不允許您選擇除textfields以外的任何元素。爲了使這種行爲,你必須去檢查:
Preferences > Advanced > Universal Access: Press Tab to highlight each item on a webpage.
爲什麼蘋果選擇在默認情況下禁用這種有用的輔助功能超出了我,但我所知道的是,如果用戶啓用此設置我的腳本將工作對他們也是。
收音機Tab鍵時,火狐忽略?它在我看來不是... – neurino 2011-03-30 09:37:18
嗯,現在我沒有看到與Mac 4上的Firefox 4。但是我被告知3.6是。 – gillesv 2011-03-30 10:17:11
從可訪問性的角度來看,這可能是一個問題:鍵盤用戶如何選擇第二種形式?看起來他們會陷入第一種形式,無法超越。 – BrendanMcK 2011-03-31 00:22:34