2012-01-24 88 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

**請不要。** – animuson

+0

我需要這樣做,它非常重要............在我的真實程序中。 – user1122910

+0

你最好有一個很好的理由這樣做!即使如此,也不推薦。如果您確實想要,請查看不同瀏覽器中的事件。 Javascript不一樣無處不在 – f2lollpll

回答

2

event.stopPropogation()event.cancelBubble()(對於某些版本的IE)將從向上傳播,包括默認的處理程序停止的事件。

正如其他人所說,防止標籤正常工作是一個壞主意。從用戶的角度來看,禁用選項卡可能會變得非常刺激。

1

我已經涉足允許textarea s到使用的標籤關鍵,或許你可以從這個進一步推導。

<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中進行過測試。

相關問題