0

このJavascriptを使用して、選択したテキストに次の変更を加えています。

    function formatText(el,tag){
var selectedText = document.selection?document.selection.createRange().text:el.value.substring(el.selectionStart,el.selectionEnd);// IE:Moz
if (selectedText == "")
{return false}
var newText='"#28'+tag+'"'+selectedText+'"#28'+tag+'"';
if(document.selection){    //IE
document.selection.createRange().text=newText;
}
else{   //Moz
el.value=el.value.substring(0,el.selectionStart)+newText+el.value.substring(el.selectionEnd,el.value.length);
}
}

ただし、新しいタグは、実際に選択を行っているテキストエリアではなく、別のテキストエリアにのみ表示されるようにしたいです。この場合、2つのテキスト領域があります。1つは「message_text」と呼ばれ、もう1つは「message」と呼ばれます...「message_text」にテキストを入力して選択しますが、選択に加えられた変更は「message」にのみ反映される必要がありますテキスト領域。

現在、私はこれを試しました:

<button type="button" value="D" onclick="formatText(message,'D')" class="blue">D</button>

ただし、これは、「メッセージ」テキスト領域でanytninを選択した場合にのみ機能します。

ありがとう

4

1 に答える 1

1

javascriptコードを拡張する必要があります。

function formatText(el_from, el_to, tag) {
    var selectedText = document.selection ? document.selection.createRange().text : el_from.value.substring(el_from.selectionStart, el_from.selectionEnd);// IE:Moz

    if (selectedText == "") {
        return false;
    }

    var start_index = el_to.value.indexOf(selectedText);
    var sel_t_len = selectedText.length;
    var copy_selText = el_to.substring(start_index, sel_t_len);

    var newText='"#28'+tag+'"'+copy_selText+'"#28'+tag+'"';

    el_to.value = el_to.value.substring(0, start_index) + newText + el_to.value.substring(sel_t_len, el_to.value.length);
}

次に、次のように呼び出すことができます。

<button type="button" value="D" onclick="formatText(document.getElementById('message_text'), document.getElementById('message'),'D')" class="blue">D</button>

PS:よくdocument.getElementByIdわかりません-jQueryを使用してから何年も使用していません...jQueryに変換する必要もあります...IE、FF、ChromeなどのJSを解決する必要はありません-jQueryハンドルこれだけで...

編集:わかりました、私は少しカスタマイズをしました、そしてそれはあなたのニーズに合うはずです...

于 2012-05-21T12:10:08.480 に答える