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 的位置。
您能否包含函数 getSelectedRange
、setTextInRange
和 setSelectedRange
的代码?这会让我更好地了解 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, "")
希望这对您有所帮助
不确定我是否完全理解您的意思,但我已经拼凑了一个快速原型。
$("#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;
}
一直在尝试将我发现的一段代码改编为删除文本块中向前删除 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 的位置。
您能否包含函数 getSelectedRange
、setTextInRange
和 setSelectedRange
的代码?这会让我更好地了解 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, "")
希望这对您有所帮助
不确定我是否完全理解您的意思,但我已经拼凑了一个快速原型。
$("#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;
}