如何在Mozilla Firefox中禁用TAB键

How to disable TAB key in Mozilla Firefox?

本文关键字:TAB Firefox Mozilla      更新时间:2023-09-26

我想禁用HTML表单中的选项卡键。我发现以下JavaScript代码可以禁用选项卡,但它在Firefox中不起作用(在Chrome和IE中起作用)。

<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>

event.stopPropogation()event.cancelBubble()(对于特定版本的IE)将阻止事件向上传播,包括默认处理程序。

正如其他人所说,阻止选项卡正常工作是个坏主意。从用户的角度来看,禁用选项卡可能会变得非常令人恼火。

我已经尝试过允许在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>

注:。这绝对不是跨浏览器兼容的代码,只在最近版本的Chrome中进行了测试。