gpt4 book ai didi

javascript - 如何从 textarea 中获取突出显示的文本位置?

转载 作者:行者123 更新时间:2023-12-01 11:44:23 25 4
gpt4 key购买 nike

我想使用 javascript 获取选定的文本位置。例如,

我有一个简单的文本区域。

#input-text {
resize: none;
width: 50%;
height: 50px;
margin: 1rem auto;
}
<textarea id="input-text">I am a student and I want to become a good person</textarea>


在我的文本区域中,我有一些文本,例如:
"I am a student and I want to become a good person"

从这个字符串中,如果我从 textarea 中选择“成为一个好人”,

那么如何在javascript中获取选定的文本/字符串位置?

这里选择的字符串字符从 29 开始,以 49 结束。所以开始位置是 29,结束位置是 49

最佳答案

这将适用于所有 <textarea> 使用鼠标和键盘进行文本选择页面上的元素。
如果您不想要所有 <textarea>,请更改选择器(更具体)具有此文本选​​择的元素。
阅读评论,如果您不想/不需要键盘选择,您将在那里找到如何禁用键盘选择。

var mySelection = function (element) {
let startPos = element.selectionStart;
let endPos = element.selectionEnd;
let selectedText = element.value.substring(startPos, endPos);

if(selectedText.length <= 0) {
return; // stop here if selection length is <= 0
}

// log the selection
console.log("startPos: " + startPos, " | endPos: " + endPos );
console.log("selectedText: " + selectedText);

};

var textAreaElements = document.querySelectorAll('textarea');
[...textAreaElements].forEach(function(element) {
// register "mouseup" event for the mouse
element.addEventListener('mouseup', function(){
mySelection(element)
});

// register "keyup" event for the keyboard
element.addEventListener('keyup', function( event ) {
// assuming we need CTRL, SHIFT or CMD key to select text
// only listen for those keyup events
if(event.keyCode == 16 || event.keyCode == 17 || event.metaKey) {
mySelection(element)
}
});
});
textarea {
resize: none;
width: 50%;
height: 50px;
margin: 1rem auto;
}
<textarea>I am a student and I want to become a good person</textarea>

关于javascript - 如何从 textarea 中获取突出显示的文本位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60359921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com