0

我想禁用tab我的 HTML 表单中的键。我发现以下 JavaScript 代码禁用tab,但它在 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>
4

2 回答 2

2

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

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

于 2012-01-24T08:03:50.937 回答
1

我已经涉足允许tab在 s 中使用密钥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>

注意。这绝对不是跨浏览器兼容的代码,并且仅在最新版本的 Chrome 中进行了测试。

于 2012-01-24T08:41:37.913 回答