1

javascript を使用してテキスト領域に文字を追加/削除するにはどうすればよいですか。画面上のキーパッドを介して入力を行っているとします。バックスペース、デル、エンターなど、できるだけ多くのキーをシミュレートする必要があります。より困難なタスクは、テキストエリアの疑似カーソルを維持し、キーパッドから入力を受け取ったときにカーソルを移動することです。

したがって、左矢印を押して疑似カーソルのトラックがある場合は、カーソルを 1 つ後ろの位置に移動してから、その位置から文字を挿入/削除する必要があります。

私は自分自身を明確にしたことを願っています。どんな助けでも大歓迎です。

4

2 に答える 2

2

カーソル位置を読み取って設定する関数は次のとおりです。

function doGetCaretPosition (ctrl) {
    var CaretPos = 0;   // IE Support
    if (document.selection) {
    ctrl.focus ();
        var Sel = document.selection.createRange ();
        Sel.moveStart ('character', -ctrl.value.length);
        CaretPos = Sel.text.length;
    }
    // Firefox support
    else if (ctrl.selectionStart || ctrl.selectionStart == '0')
        CaretPos = ctrl.selectionStart;
    return (CaretPos);
}
function setCaretPosition(ctrl, pos){
    if(ctrl.setSelectionRange)
    {
        ctrl.focus();
        ctrl.setSelectionRange(pos,pos);
    }
    else if (ctrl.createTextRange) {
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}

このサイトから入手しました

キーストロークをキャプチャするには、ここで jQuery を使用できます。これに対する答えは次のとおりです。

JavaScript をキーにバインドする

于 2012-05-27T19:00:52.797 に答える
1
  1. キーが押されたときのデフォルトの処理を防止する

$('#textArea').keypress(function(event) {
  //console.log("Key down:" + event.keyCode);
  event.preventDefault();
  processKey(event);
});
  1. processKey(event) で処理を行います

  2. 処理に基づいてキャレットの位置を設定します

function setCaretPosition(pos){
    var target = document.getElementById("target"); 
    if(target.setSelectionRange) {
        target.focus();
        target.setSelectionRange(pos,pos);
    }
    else if (target.createTextRange) {
        var range = target.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}
于 2012-05-27T19:03:36.117 に答える