[英]how to i assign text direction RTL for window.getSelection value, I tried but how to remove getSelection from existing value of text area
var F1 = document.getElementById('samuText').value; function insertAtCursor() { if (window.getSelection) { sel = window.getSelection(); document.getElementById('samuText').value = F1+sel // here i need to remove selected value from F1 //alert(sel); //ocument.getElementById(sel).style.direction = "rtl"; } }
<textarea id="samuText">Samudrala Ramu</textarea><button onclick="insertAtCursor();">RLM</button>
Okay you should be able to get the selected text and its index(text position). 好的,您应该能够获取所选文本及其索引(文本位置)。 I searched and didn't find any solutions to get the text position from
<textarea>
. 我进行了搜索,但没有找到任何方法来从
<textarea>
获取文本位置。 But this answer provided a way to get the text position from <div>
. 但是此答案提供了一种从
<div>
获取文本位置的方法。 And you can make <div>
look like <textarea>
. 您可以使
<div>
看起来像<textarea>
。 I combined those two answers and slightly modified. 我结合了这两个答案并稍加修改。 Note that
changeValue
function is the key for manipulating text. 注意
changeValue
函数是操作文本的关键。
<html>
<style>
#main {
-moz-appearance: textfield-multiline;
-webkit-appearance: textarea;
border: 1px solid gray;
font: medium -moz-fixed;
font: -webkit-small-control;
height: 28px;
overflow: auto;
padding: 2px;
resize: both;
width: 400px;
}
</style>
<body>
<div id="main" contenteditable>Samudrala RamuSamu</div>
<input type="button" onclick="changeValue()" unselectable="on" value="Get selection">
</body>
<script>
function getSelectionCharOffsetsWithin(element) {
var start = 0, end = 0;
var sel, range, priorRange;
if (typeof window.getSelection != "undefined") {
range = window.getSelection().getRangeAt(0);
priorRange = range.cloneRange();
priorRange.selectNodeContents(element);
priorRange.setEnd(range.startContainer, range.startOffset);
start = priorRange.toString().length;
end = start + range.toString().length;
} else if (typeof document.selection != "undefined" &&
(sel = document.selection).type != "Control") {
range = sel.createRange();
priorRange = document.body.createTextRange();
priorRange.moveToElementText(element);
priorRange.setEndPoint("EndToStart", range);
start = priorRange.text.length;
end = start + range.text.length;
}
return {
start: start,
end: end,
value: range.toString()
};
}
function changeValue() {
var mainDiv = document.getElementById("main");
var sel = getSelectionCharOffsetsWithin(mainDiv);
var mainValue = mainDiv.textContent;
var newValue = mainValue.slice(0,sel.start) + mainValue.slice(sel.end) + sel.value;
mainDiv.textContent = newValue;
}
</script>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.