これまで同様の質問がされていたことは知っていますが、私が見ている動作は少し違っています。Chromeのテキストエリア内でタブキーをクリックするとpreventDefault()が発生する
私はいくつかのjqueryアコーディオンタブに分割しているフォームを持っています。私は、ユーザーがタブ1の下にテキストフィールドを記入し、タブ2を自動的に開いてそのタブのテキストフィールドにフォーカスを置くためにタブキーをキーダウンできるようにしたい。私が抱えている問題は、Chromeのデフォルトのタブキーダウンの動作を妨げることです。
$("form#new_story").keydown(function (e) {
if(!e) var e = window.event;
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
alert("tab was keyed");
}
});
私はこれをChrome、FF、Safariでテストしました。 FFやSafariでうまく動作しますが、Chromeを使用しているユーザーがタブキーをキーダウンすると、実際のタブがイベントのトリガー前にテキストフィールドに入力されます。私はこの動作を停止したいと思いますが、イベントがトリガーされる前にタブが明確に入力されています。これをやめる方法はありますか?
タブは* keydownイベントの前に*入力されていますか?聞こえそうもない。しかし、それを防ぐために、 'keypress'をフックして抑制することができます。 – Bergi
'keypress'はタブプレスをキャプチャしませんでした。(私は' keypress'が古いバージョンの非文字キーをキャプチャしないことを知っています。)Chromeの文字以外のキーをキャプチャしないことを知らなかった。問題を見つけました。これはjqueryアコーディオンとjquery validateの間の非常に面白い相互作用です。 –