0

tabHTML フォームでキーを無効にしたい。を無効にする次の 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 に答える