2013-03-21 4 views
5

入力タイプ= 'テキスト'で 'タブ'を無効にするクロスブラウザソリューションはありますか?は、入力タイプ= 'テキスト'で 'タブ'を無効にする方法はありますか?

<input type='text' /> 

は、「タブ」を押すと(例えばボタン)次の「フォーカス可能」コンポーネントに私が代わりに「タブ」何かをやりたい

を移動できます。 Google検索のタブはだけではなく、次のフォーカス可能コンポーネントにあなたを動かすの提案テキストを自動補完するために使用されていても例 については ...

+1

以下のような

<input type="text" id="myField1" onkeydown="return stopTab(event);" /> 

とJSものになるだろうがのkeydownイベントリスナーを設定し、ヨーヨー – Rooster

+1

は、Uすることができます明確にplsを説明してください – PSR

+0

私はより良い説明を編集しました。 @ジョン私がキーイベントによって通知を受けても、私はまだフォーカスが発生するのを防ぐ方法を知らない。 – Zo72

答えて

10
document.querySelector('input').addEventListener('keydown', function (e) { 
    if (e.which == 9) { 
     e.preventDefault(); 
    } 
}); 

は、クロスブラウザ、あなたはどのように依存

感謝上記はIE9(およびその他の最新のブラウザ)のみをサポートしているため、話しています。

http://jsfiddle.net/ExplosionPIlls/YVUzz/

IE8-はattachEvent代わりのaddEventListenere.keyCodeの代わりe.whichを使用しており、そこにはpreventDefaultはありませんが、あなたはreturn falseを使用することができます。

+0

'querySelector'もie <7で、ff <3ではサポートされていません。http://caniuse.com/queryselector –

+0

querySelectorは無関係です。それは重要なイベントリスナーのコードです。 e.preventDefault – Zo72

+0

e.preventDefault()/ e.これはすべてのブラウザではありません。 – epascarello

1

はいキーは、タブを押した場合は、チェックし、もしそうならば、falseを返します。

<form class='noTab'> 
    <input type="text" /> 
    <input type="text" /> 
    <select> 
     <option>a</option> 
     <option>b</option> 
    </select> 
    <textarea> 
    </textarea> 
</form> 

jQuery('.noTab').find('input,select,textarea').keydown(function (e) { 
    if (e.which === 9) { 
     return false; 
    } 
}); 

jQueryのは、レガシーブラウザ上でこの仕事をできるようになります。タブ/シフト+タブとして、それは2つの形態、クラス「NOTAB」とせずに1と1を示しているフィドル、オン

http://jsfiddle.net/JxMhY/

は多くの形態のために有用であるが、特別な「タブを持っていない1 "アクション。

非jQueryの実装は少しこのようになる
+0

'$( '#form_name input')'はより効果的できれいになります:) –

+0

彼はjQueryを使用しているとは指定していませんでしたが、もしそうなら、これが最適な解決策です –

2

-

HTMLが

function stopTab(e) { 
    var evt = e || window.event 
    if (evt.keyCode === 9) { 
     return false 
    } 
} 
関連する問題