2009-04-21 35 views
6

在Rails應用中,我希望用戶能夠輸入數據而不必使用鼠標。在導軌應用中的「Tab順序」

爲了做到這一點,我想設置光標移動到文本字段,下拉框和按鈕的順序。

有沒有辦法做到這一點?

回答

0

我還沒有嘗試過這樣做(但也許我應該)。總之,w3.org有這個:http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms-keyboard-access它簡要描述了tabindex屬性的使用。我想你必須在你的控制上單獨設置它,這會有點令人厭煩,但不是那麼可怕。

我不知道它是否可以工作,但可以考慮使用100的增量,這樣就可以在現有控件之間添加,而無需每次重新排序整個控件列表。

1

我不是一個鐵桿人,但我用過其他的web MVC-ish框架。只是一個警告:)

當你輸出你的表單元素,你應該能夠添加額外的屬性給每個(如類,onchange等)。您可以通過爲每個值設置tabindex值來完成您想要的操作,隨着您的增加而增加。由此產生的HTML看起來像這樣:

<input type="text" id="myInput" tabindex=1 /> 
<select id="mySelect" tabIndex=2> 
    <option id="myOpt1" value="someValue">Foo!</option> 
</select> 

這樣的事情會做的工作。

此外,它看起來像this question has already been posted :)

0

我不是100%肯定,但我想你可以採取的選項卡功能的控制來管理自己的順序。

在僞代碼一旦元素被使用,你可以輸入任何或用箭頭來瀏覽下拉菜單中選擇鍵盤,將使這樣的事情

all_fields = ["field1","field2"] 
current = 0 
if catch event("tab pressed"){ 
current = (current+1) %all_fields.size 
all_fields[current].focus 
} 

你也可以使用tabindex http://www.w3.org/TR/html401/interact/forms.html,但我從來沒有這樣做,所以我不知道它是否會工作正常。

最後的解決方案是按照您希望人們編輯它們的順序放置字段。

3
<%= f.text_field :attribute, :tabindex => 1 %> 

然後2,3,4等

編輯:從 「tab_index」 去掉下劃線。很近。

而且,你可以做一個輔助方法來自動增加指數:

def tabindex 
    @tabindex ||= 0 
    @tabindex += 1 
end 
+0

我必須使用本地變量而不是實例變量請你解釋一下我,如果我走爲什麼它不工作tabindex而不是@tabindex – railslearner 2015-08-11 05:47:04

8

傑夫·彼得森是差不多吧。

<%= f.text_field :attribute, :tabindex => 1 %> 
3

如果您使用simple_form你需要做的是像這樣:

<%= f.input :name, input_html: {:tabindex => 1} %>