Как отключить клавишу TAB в мозиле Firefox? - PullRequest
0 голосов
/ 24 января 2012

Я хочу отключить клавишу 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>

Ответы [ 2 ]

2 голосов
/ 24 января 2012

event.stopPropogation() или event.cancelBubble() (для определенной версии IE) остановит распространение события вверх, включая обработчик по умолчанию.

Как уже говорили, плохая идея - мешать правильной работе вкладки. С точки зрения пользователя, отключение вкладки может стать очень раздражающим.

1 голос
/ 24 января 2012

Я баловался с тем, чтобы разрешить использование клавиши tab в 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.

...