2017-05-02 8 views
0

私は、ユーザーが特殊文字を入力して値を自動入力するためのタブを作成できるプロジェクトに取り組んでいます。この部分はほとんど機能していますが、キャレット位置の前からx個の文字を削除したいと考えています。 など。 |がキャレットの場合、次のテキストが表示されます@chr|tinyMCEのキャレット位置からx個の文字を削除する

私はカーソル位置の前に3文字を削除したいと思っています。私はちょうど@で終わるだろう。

私は以下のコードを使用して現在のカーソル位置を取得する方法を見つけましたが、その位置からx個の文字を削除する方法を見つけることができませんでした。

function getCaretPosition() 
     { 
      var ed = tinyMCE.get('txtComment');  // get editor instance 
      var range = ed.selection.getRng().startOffset;  // get range 
      return range; 
     } 

答えて

0

あなたは現在のキャレット位置で終わるRangeを作成することによってこれを行うことができます。

var ed = tinyMCE.get("mce_0"); // get editor instance 
var editorRange = ed.selection.getRng(); // get range object for the current caret position 

var node = editorRange.commonAncestorContainer; // relative node to the selection 

range = document.createRange(); // create a new range object for the deletion 
range.selectNodeContents(node); 
range.setStart(node, editorRange.endOffset - 3); // current caret pos - 3 
range.setEnd(node, editorRange.endOffset); // current caret pos 
range.deleteContents(); 

ed.focus(); // brings focus back to the editor 

、デモを使用どこかテキストでキャレットを配置して、「3を削除」ボタンをクリックします上の3文字を削除します。

私のデモは単純化されており、境界チェックは行われません。

デモ:http://codepen.io/anon/pen/dWVWYM?editors=0010

の互換性は、これは完全に働いたIE9 +

+0

おかげです。私は恩恵をあなたに報いるが、私は9時間待たなければならない – Boardy

関連する問題