Javascript:删除光标后的文本

Javascript: Delete text after cursor

一直在尝试将我发现的一段代码改编为删除文本块中向前删除 1 个字符的代码片段,该代码段删除文本块向前(即到末尾)的所有文本。我可以将长度设置为更大的数字(例如 100)以捕获大多数实例,但这似乎并不干净。

var sel = getSelectedRange();
var start = sel[0];
var length = sel[1];
setTextInRange(start, length == 0 ? 1 : length, "");
setSelectedRange(start, 0);

例如,如果文本为 "This is the sample text" 并且光标位于单词 "is" 的前面,则结果将只是单词 "This "

我在 iOS 上的草稿应用程序中使用这段代码来处理文本 - 对于这篇文章和第一篇文章来说非常新,所以希望我包含了所有信息...

编辑:详细说明正在使用的函数的 Drafts app help page 的位置。

您能否包含函数 getSelectedRangesetTextInRangesetSelectedRange 的代码?这会让我更好地了解 sel 是什么。

您说得对,将长度设置为 100 不太干净。您想要做的是动态获取其余文本的长度并将其删除。可能你只是想传入 sel.length,但我不太确定 sel 是什么数组。

从未使用过,也不完全确定 Drafts 是什么,但看看函数定义,您可能只需要使用不同的定义。

test = "The lazy brown dog" \ (imagine brown was selected)

sel = getSelectedRange() \ returns [10, 5] if i counted right...

如果你想删除"brown dog"你不能使用getSelectedRange返回的长度你需要先确定整个字符串的长度。

length = getText().length

length = length - sel[1] \ find the length you want

setTextInRange(sel[0], length, "")

希望这对您有所帮助

不确定我是否完全理解您的意思,但我已经拼凑了一个快速原型。

http://jsfiddle.net/5bLxjja9/

$("#Javascript_example").click(function(){

   var x = $("#Javascript_example").val();

    var newStr = []
    for(var i = 0; i< curPosition();i++){
        newStr.push(x[i]);
    }
    console.log(newStr.join(''));

    $("#Javascript_example").val(newStr.join(''));

});



function curPosition()
{
    var ctl = document.getElementById('Javascript_example');
    var curPos = ctl.selectionStart;
   return curPos;
}