Javascript:删除光标后的文本

时间:2015-01-04 21:15:16

标签: javascript text

我一直试图调整一段代码,我发现在一个文本块中将1个字符向前删除到一个代码片段中,该代码片段删除文本块的所有文本(即通过结尾)。我可以将长度设为更大的数字(比如100)以捕获大多数实例,但这看起来并不干净。

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

例如,如果文本显示为“这是示例文本”并且光标位于单词“is”的前面,则结果将只是单词“This”

我在iOS上的草稿应用程序中使用此代码来处理文本 - 这是第一篇和第一篇文章的新内容,所以希望我包含所有信息......

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

3 个答案:

答案 0 :(得分:0)

您是否可以添加功能代码getSelectedRangesetTextInRange& setSelectedRange?这样可以让我更好地了解sel是什么。

你是正确的,将长度设置为100不是那么干净。你想要做的是动态地获取文本其余部分的长度。删除那个。可能你只想传递sel.length,但我不太确定sel是一个数组。

答案 1 :(得分:0)

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

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

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

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

length = getText().length

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

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

希望这会有所帮助

答案 2 :(得分:0)

我不确定我是否完全理解你,但我已经将快速原型放在一起。

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;
}