2009-07-18 2 views
3

私は自分のフォームと、フォーム要素のtabindexプロパティを使ってフォームとのやりとりをコントロールしようとしています。私のすべての要素にはtabindexが指定されています。この値を尊重して適切に使用したいと考えています。jQueryを使用してtabindexの問題を回避する

私は現在Mac/Firefox上で開発していますが、タブ切り替えを入力要素とリストだけに設定するMacのデフォルトのシステム設定についてはわかっています。しかし、私は、これと他の設定をオーバーライドする必要があります。これは、どのシステム/ブラウザでも可能です。

私はこれを回避しようとするためにjQueryを使用しています。この時点で私のコードは次のとおりです:

$(":input").keypress(function(e){ 
    if (e.which == 0) 
    { 
     tindex = parseInt($(this).attr("tabindex")) + 1; 
     $(":input[tabindex='" + tindex + "']").focus(); 
    } 
}); 

しかし、これは私の望むようには機能しません。デフォルトのMac設定を有効にすると、実際にはtabindexをスキップし、非text/textarea項目はすべてスキップします。たとえば、私がinput[tabindex=2]にいて、「Tab」キーを押すと、input[tabindex=4]に送られます。私がinput[tabindex=2]にいて、input[tabindex=2]input[tabindex=4]の間にselectのボックスがある場合は、input[tabindex=5]に送信されます。

input[tabindex=2]私にinput[tabindex=3]、、input[type=radio][tabindex=3]などを送信します。基本的に何がtabindex 3のです。

私はこの問題を回避するためのアイデアを教えてください。また、私が見ていなければならない他のシステム/ブラウザーの何かを知っているかどうか教えてください。

+0

selectboxでは動作しますか? – cometta

答えて

4

e.preventDefault();をkeypressイベントハンドラに追加します。これにより、ブラウザはこのイベントに対してデフォルトアクションを実行しなくなります。これにより、ブラウザがクリックハンドラに置かれている場合、ブラウザがリンクをたどるのを止めることになります。

documentationを参照してください。

+0

ありがとう、完璧に働いた! –