2011-11-09 10 views
1

2つのフィールドをタブで移動するコードブローがあり、IEおよびChromeでは効果がありません。警告入れ)とFirefoxで、これがあれば、私はASP.NetとjQueryバージョン1.3.2jQuery Focus()またはKeypress()がIEおよびChromeで動作しない

$(document).ready(function() { 
    $("#TextBox1").keypress(function (e) { 
     var kCode = e.keyCode || e.charCode; 
     if (kCode == 9) { 
      $("#TextBox2").focus(); 
     } 
    }); 
}); 
+1

この作業を手動で行う時間を無駄にしないでください! 'tabindex'属性を利用してください。 –

答えて

4

私は主な問題はkeypressイベントを使用していると思います。これは、文字が入力に追加されたときにのみ発生し、キー(TABなど)が押されたときには発生しません。

他のキープレスを処理するには、​​を使用する必要があります。しかし、あなたのフィドルでそれをテストすることは、まだ動作していないようです。それは(少なくともChromeで)動作させるために、私は、デフォルトのアクションを阻止しなければならなかった:

$(document).ready(function() { 
    $("#TextBox1").keydown(function (e) { 
     e.preventDefault(); 
     var kCode = e.keyCode || e.charCode; 
     console.log(kCode); 
     if (kCode == 9) { 
      $("#TextBox2").focus(); 
     } 
    }); 
}); 

ここupdate fiddleです。しかし、あなたの質問を正しく理解していれば、タブキーが押されたときに、フォーカスされた要素を変更するだけです。もしそうなら、代わりにtabindex属性を使用するのはなぜですか?

2

によってで開発していますいくつかのバグ(それが二回あっジャンプ)あなたは問題があると思います、で実行されますASP.NET、あなたがClientIDでコントロールを参照する必要があります。

$(document).ready(function() { 
    $("#<%=TextBox1.ClientID%>").keypress(function (e) { 
     var kCode = e.keyCode || e.charCode; 
     if (kCode == 9) { 
      $("#<%=TextBox2.ClientID%>").focus(); 
     } 
    }); 
}); 
+1

良い点が、おそらく赤いニシン。 FireFoxで動作し、セレクタが正しい。これは、ブラウザが異なるキーイベントを処理する方法の違いによるものです。 Firefoxはタブのkeypressイベントを発生させますが、他のブラウザはkeypressイベントを発生させません。 – gilly3

+0

さて、私はそれも少し奇妙だと思った。 'ClientIDMode'が静的に設定されていないと仮定すると、' INamingContainers'も存在しないというのはちょっと変です。 –

3

keypressタブ(キーコード9)のイベントは発生しません。 keyupまたは​​を使用する必要があります。

関連する問題