1

カーソルが配置されている場合、カーソル位置のテキストエリアにテキストを挿入したいのですが、そうでない場合、テキストはIEの既存のテキストの最後に追加する必要があります。

私はこの機能を使用しましたが、これは mozilla では正常に機能していますが、既存のテキストの開始位置に追加する場所では機能していません。

function insertAtCursor(text) {   

    var field = document.frmMain.Expression;

    if (document.selection) {

        field.focus();

        sel = document.selection.createRange();
        sel.text = text;
    }
}

カーソルが配置されていない場合、既存のテキストの最後にテキストを追加したい。

4

1 に答える 1

3

フィールドがすでにフォーカスされているかどうかを確認TextRangeし、そうであれば選択から生成された を使用します。そうでない場合は、TextRangeフィールドの を作成し、最後まで折りたたんでください。

他のブラウザでカーソル位置にテキストを挿入するためのコードはないようですが、おそらくそのビットを省略しました。

ライブデモ: http://jsbin.com/ixoyes/2

コード:

function insertAtCursor(text) {   
    var field = document.frmMain.Expression;

    if (document.selection) {
        var range = document.selection.createRange();

        if (!range || range.parentElement() != field) {
            field.focus();
            range = field.createTextRange();
            range.collapse(false);
        }
        range.text = text;
        range.collapse(false);
        range.select();
    }
}
于 2012-07-06T10:15:24.107 に答える