2017-09-13 21 views
0

私はcontenteditable = trueのdivと、テキストdivの選択されたテキストを変更するボタンをonclickとしました。javascript:選択したテキストをボタン上でcontenteditableから置き換えます。

本部の編集可能:

<div class="content" id="articleEditor" contenteditable="true"></div> 

スタイルオプション

<div class="editor-option"> 
    <button id="changeText">change</button> 
</div> 

JSファイル

function replaceSelectedText(replacementText){ 
    if (window.getSelection().rangeCount) { 
     range = window.getSelection().getRangeAt(0); 
     range.deleteContents(); 
     var el = document.createElement("span"); 
     el.innerHTML = replacementText; 
     var frag = document.createDocumentFragment(), node, lastNode; 
     while ((node = el.firstChild)) { 
      lastNode = frag.appendChild(node); 
     } 
     range.insertNode(document.createTextNode(replacementText)); 
    } 
} 

$('button').click(function(){ 
    replaceSelectedText('<span class="bold">'+window.getSelection().toString()+'</span>'); 
}) 

は、今では最後の単語を除くすべてのテキストの選択のために動作します。最後の単語を選択してボタンをクリックすると、選択肢は太字になりますが、後で書いたものは大胆です。

これを修正するにはどうすればよいですか?

答えて

0

あなたはこれを見てとることをお勧めします:How to set caret(cursor) position in contenteditable element (div)?

私は置換テキストに空白文字を追加し、その空間の終了後にカーソルを設定しようとするだろう。

(また、コードには誤植が含まれていますが、ボタンをクリックすると一重引用符で囲まれません)

関連する問題