0

私は、ユーザーがコメント システム (貧しい人々 のテキスト エディター) で使用される te​​xtarea 内のテキストの簡単な書式設定を実行できるようにしようとしています。カーソルでテキストを選択し、ボタンをクリックしてフォーマットできるようにしたいと考えています。私の質問は、選択したテキストを取得して返すように JavaScript を取得する方法です。次のようになると想像してください。

<script>
function formatText(field) {
//gets text
var text;
text = field.value.substring(field.selectionStart, field.selectionEnd);
//formats it
var text = '<b'>+text+'</b>';
//returns it
field.value.substring(field.selectionStart, field.selectionEnd); = text;
}
</script>

<body>
<textarea id="field"></textarea><button onclick="formatText('field')">Make bold</button>
</body>

更新:次のコードは、選択されたテキストを取得し、フォーマットしてからテキストエリアに送り返しますが、テキストエリア内のすべてのテキストを置き換えます...したがって、すべてではなく、テキストエリア内の選択したテキストを置き換える方法が必要です-そして私やります:

<head>
    <script type="text/javascript">
        function GetSelection () {
            var selection = "";

            var textarea = document.getElementById("field");
            if ('selectionStart' in textarea) {
                    // check whether some text is selected in the textarea
                if (textarea.selectionStart != textarea.selectionEnd) {
                    selection = textarea.value.substring  (textarea.selectionStart, 

textarea.selectionEnd);
                }
            }
            else {  // Internet Explorer before version 9
                    // create a range from the current selection
                var textRange = document.selection.createRange ();
                    // check whether the selection is within the textarea
                var rangeParent = textRange.parentElement ();
                if (rangeParent === textarea) {
                    selection = textRange.text;

                }
            }

            if (selection == "") {
                alert ("No text is selected.");
            }
            else {
                selection = "<b>"+selection+"</b>";
        document.getElementById('field').value = selection;

            }
        }
    </script>
</head>
<body>
    <textarea id="field" spellcheck="false">Select some text within this field.</textarea>
    <button onclick="GetSelection ()">Get the current selection</button>
</body>

document.getElementByID.value.substr を指定する方法があると思いますが、構文がわかりません。

4

2 に答える 2

1

ここにあります: 貧乏人のテキスト エディター。textarea のテキストに適用される SelectionStart と SelectionEnd を使用して、選択されたテキストを取得します。次に、再フォーマット後、選択テキストの前、選択テキスト、および選択テキストの 3 つの部分から textarea テキストを元に戻します。document.getElementById('textareaid').value = 組み立てられたテキストを使用してテキストエリアに戻します。

<html>
<head><script>
function format () {
    // code for IE
    var textarea = document.getElementById("textarea");

    if (document.selection)
    {
    textarea.focus();
    var sel = document.selection.createRange();
    // alert the selected text in textarea
    alert(sel.text);

    // Finally replace the value of the selected text with this new replacement one
    sel.text = '<b>' + sel.text + '</b>';
    }

    // code for Mozilla

    var textarea = document.getElementById("textarea");

    var len = textarea.value.length;
    var start = textarea.selectionStart;
    var end = textarea.selectionEnd;
    var sel = textarea.value.substring(start, end);

    // This is the selected text and alert it
//    alert(sel);

    var replace = '<b>' + sel + '</b>';

    // Here we are replacing the selected text with this one
    textarea.value = textarea.value.substring(0,start) + replace + textarea.value.substring(end,len);

var formatted = textarea.value;
document.getElementById('field').value = formatted;
}

</script></head>
<body>
<textarea id="textarea">One two three four five six seven eight</textarea><button onclick="format 

()">Format selected text</button>
</body>
</html>
于 2012-05-03T02:06:55.477 に答える