簡體   English   中英

如何在SCeditor中移動cursor position?

[英]How to move the cursor position within SCeditor?

我正在將文本插入到 SCEditor 的實例中,並希望在插入后將 cursor 移動到插入文本中的特定 position。

SCeditor 初始化代碼:

var textarea = $('textarea[name="'+fieldname+'"]')[0];

// shortcut to insert custom text
sceditor.instance(textarea).addShortcut('ctrl+alt+b', function() 
{
   var fieldname = this.opts.id;
   parent.window['sce_'+fieldname].insertText('\\sqrt{}');
   
   // move cursor one to the left, so it is within the two brackets
   // ...
   
   return;
}

如何移動cursor?


相關代碼我找到了object范圍內的交易,但是沒有如何移動cursor的例子:

   var rangeHelper = this.getRangeHelper();
   var range = rangeHelper.selectedRange();
   rangeHelper.selectRange(range);
   range.setStartAfter(parent);
   rangeHelper.selectRange(range);

搞亂范圍是相當可怕的。 最簡單的方法可能是將文本插入為 HTML 並包括一些 SCEditor 用來恢復選擇的特殊選擇標記。 這應該工作:

// Remove any current markers
instance.getRangeHelper().removeMarkers()
// Insert the text with the special marker tags
instance.getRangeHelper().insertHTML(
    '\sqrt{' +
    '<span id="sceditor-start-marker" class="sceditor-selection sceditor-ignore" style="display: none; line-height: 0;"> </span>' +
    '<span id="sceditor-end-marker" class="sceditor-selection sceditor-ignore" style="display: none; line-height: 0;"> </span>' +
    '}'
);
// Focus will set the cursor to the markers
instance.focus()

在源代碼模式下,它更容易(在 WYSIWYG 模式下不起作用,可能是它應該做的事情):

instance.insertText('\sqrt{', '}');

您需要將Range.setStart()與自定義偏移量一起使用。

 function setCaret() { var el = document.getElementById("editable") var range = document.createRange() var sel = window.getSelection() range.setStart(el.childNodes[2], 5) range.collapse(true) sel.removeAllRanges() sel.addRange(range) }
 <div id="editable" contenteditable="true"> text text text<br>text text text<br>text text text<br> </div> <button id="button" onclick="setCaret()">focus</button>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM