2012-01-24 4 views
0

タブキーをHTMLフォームで無効にします。 タブを無効にするJavaScriptコードが見つかりましたが、Firefox(ChromeとIEで動作)では機能しません。mozila firefoxでTABキーを無効にするにはどうすればいいですか?

<script type="text/javascript"> 
document.onkeydown = function() { 
    if (window.event && window.event.keyCode == 9) { // Capture and remap TAB 
     window.event.keyCode = 9; 
    } 
    if (window.event && window.event.keyCode == 9) { // New action for TAB 
     alert('The TAB key was pressed'); 
     return false; 
    } 
}  
</script> 

これは私のHTMLフォームです:

<body> 
    <form> 
     <input type='text'><br> 
     <input type='text'><br> 
     <input type='text'><br> 
     <input type='text'><br> 
     <input type='text'><br> 
     <input type='text'><br> 
     <input type='text'><br> 
     <input type='submit'><input type='reset'> 
    </form> 
</body> 
+8

** ** do not。** – animuson

+0

私はこれを行う必要があります、それは非常に重要です............私の実際のプログラムでは。 – user1122910

+0

あなたは本当にそうするための本当に良い理由があります!それでも、それはお勧めしません。本当にしたい場合は、さまざまなブラウザのイベントを確認してください。 Javascriptはどこでも同じではない – f2lollpll

答えて

2

event.stopPropogation()またはevent.cancelBubble()(IEの特定のバージョンのための)デフォルトのハンドラを含む、上向きに伝播するイベントを停止します。

他の人も言っているように、タブが正しく機能しないようにすることは悪い考えです。ユーザーの視点からは、タブを無効にすることは非常に刺激的になりがちです。

1

タブのキーをtextareaで使用することをお手伝いしましたが、おそらくそれ以上に派生することができます。

<form> 
    <textarea rows="15" cols="82"></textarea> 
</form> 

<script> 
function initTabinput() { 
    window.addEventListener('keydown', tabListener.bind(area), false); 
} 

var area = document.getElementsByTagName('textarea')[0]; 
var tabListener = function (evt) { 
    if ('keyCode' in evt && evt.keyCode === 9) { 
     evt.preventDefault(); 

     var caretPos = this.selectionStart; 
     var beforeCursor = this.value.substring(0, caretPos); 
     var afterCursor = this.value.substring(caretPos); 

     caretPos += 1; 

     this.value = beforeCursor + "\t" + afterCursor; 
     this.setSelectionRange(caretPos, caretPos); 
    } 
}; 

window.addEventListener('load', initTabinput, false); 
</script> 

NB。これはブラウザ間で互換性のあるコードではなく、最近のバージョンのChromeでのみテストされています。

関連する問題