Javascript:删除光标后的文本
我一直在尝试将我发现的一段代码向前删除一个文本块中的一个字符,并将其改编为一段代码,该代码向前删除文本块中的所有文本(即从末尾)。我可以将长度设置为一个更大的数字(比如100)来捕获大多数实例,但这似乎并不干净Javascript:删除光标后的文本,javascript,text,Javascript,Text,我一直在尝试将我发现的一段代码向前删除一个文本块中的一个字符,并将其改编为一段代码,该代码向前删除文本块中的所有文本(即从末尾)。我可以将长度设置为一个更大的数字(比如100)来捕获大多数实例,但这似乎并不干净 var sel = getSelectedRange(); var start = sel[0]; var length = sel[1]; setTextInRange(start, length == 0 ? 1 : length, ""); setSelectedRange(sta
var sel = getSelectedRange();
var start = sel[0];
var length = sel[1];
setTextInRange(start, length == 0 ? 1 : length, "");
setSelectedRange(start, 0);
例如,如果文本为“This is sample text”,且光标位于单词“is”前面,则结果将只是单词“This”
我在iOS上的Drafts应用程序中使用这段代码来处理文本-这篇文章和第一篇文章都很新,所以希望我包括了所有信息
编辑:详细说明正在使用的函数的位置。能否包括函数的代码
getSelectedRange
,setTextInRange
和setSelectedRange
?这会让我更好地了解什么是sel
你说得对,将长度设置为100没有那么干净。您要做的是动态获取文本其余部分的长度并将其删除。可能您只是想传入
sel.length
,但我不太确定sel
是一个数组。从未使用过,也不完全确定草稿是什么,但看看函数定义,您可能只需要使用不同的定义
test = "The lazy brown dog" \\ (imagine brown was selected)
sel = getSelectedRange() \\ returns [10, 5] if i counted right...
如果要删除“browndog”,则不能使用getSelectedRange
返回的长度,您需要首先确定整个字符串的长度
length = getText().length
length = length - sel[1] \\ find the length you want
setTextInRange(sel[0], length, "")
希望这能有所帮助我不确定我是否完全理解你的意思,但我已经制作了一个快速原型
$(“#Javascript_示例”)。单击(函数(){
var x=$(“#Javascript_示例”).val();
var newStr=[]
对于(var i=0;i
在此网站上搜索用户Tim Down。他有很好的texr系列脚本。找到了Tim的答案,还有很多需要挖掘的地方-谢谢你的指点。这工作非常完美-我最终完全按照建议使用了代码,它完全按照我希望的那样工作。这是有道理的,我得到了逻辑-谢谢你的帮助。在原始问题中添加了一个链接,链接到所使用的函数-NickSlash的上述答案工作顺利,动态地获得了所需的长度。感谢你的帮助-但无法实现这一点(我的问题/缺乏知识)-在现有文本块上的程序中使用脚本,但无法将其转换为工作脚本。
$("#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;
}