私はテキストエリアでタブをシミュレートしようとしていますが、これまでのタブフォワードは機能していますが、バックタブをどのように動作させるかはよくわかりません。どのようにこれを行うか、またはそれを行うためのよりよい方法に関する提案は役に立ちます。テキストエリアのバックタブをシミュレートする方法
$('textarea').on('keydown mousedown', function(e){
var val = this.value,
start = this.selectionStart,
end = this.selectionEnd;
if (e.shiftKey) {
console.log('shift')
if (e.which == 9 || e.keyCode == 9) {
console.log('shift + tab')
e.preventDefault();
this.value = val.substring(0, start) + '\t' + val.substring(end);
}
} else if (e.which == 9 || e.keyCode == 9) {
console.log('tab')
e.preventDefault();
this.value = val.substring(0, start) + '\t' + val.substring(end);
}
})
私はあなたを正しく理解していれば、行頭に '\ t'文字があればそれを削除するようにテキスト領域を編集したいでしょうか?あなたはどのブラウザをターゲットにしていますか? pre IE8では、おそらくテキスト範囲を混乱させる必要があります。そうでなければ、selectionStart/selectionEndを使って現在の行を探し出し、その行の\ tの最初のインスタンスを削除することができます。 – wackozacko
これは本当に重要ですか?私はあなたがブラウザの期待される動作を無効にしているので、これを尋ねます。私は軽く軽くはしません。 – Bindrid
サイドプロジェクトでコードエディタを構築していますが、これは各コードパネルで使用されているテキストエリアをオーバーライドするだけです。上記のコードは単なる例です。最終的なコードはすべてのテキストエリアを対象としません。 – halfacreyum