|
<head>
. . .
<script src="~/jsinterop.js"></script>
</head> |
|
@using Syncfusion.Blazor.RichTextEditor
<div @onkeydown="@keyDownHandler">
<SfRichTextEditor @ref="@rteObj" ID="defaultRTE" SaveInterval="1" @bind-Value="@rteValue">
</SfRichTextEditor>
</div>
@code {
[Inject]
IJSRuntime JsRuntime { get; set; }
SfRichTextEditor rteObj;
public string rteValue { get; set; }
public int count { get; set; } = 0;
public async Task keyDownHandler(KeyboardEventArgs args)
{
if (this.rteValue != null && args.Code == "Space" && this.rteValue.Contains("@name"))
{
this.rteValue = this.rteValue.Replace("@name", "<span class='hqTag' contenteditable='false' id='currentID" + this.count.ToString() + "'>Content Inserted</span> ");
await Task.Delay(50);
JsRuntime.InvokeAsync<string>("RichTextEditor.setCursorPointer", this.count.ToString());
count++;
}
}
} |
|
window.RichTextEditor = {
setCursorPointer: function (currentIDNumber) {
var rteInstance = document.getElementById('defaultRTE').blazor__instance;
var element = rteInstance.inputElement.querySelector('#currentID' + currentIDNumber).nextSibling;
if (element !== null) {
var range = document.createRange();
range.setStart(element, 1);
rteInstance.formatter.editorManager.nodeSelection.setRange(document, range);
}
}
} |