通过javascript更改所选文本
Change selected text via javascript
window.addEventListener("keydown", function(e){
/*
keyCode: 8
keyIdentifier: "U+0008"
*/
if(e.keyCode === 16 && getSelectionText() != "") {
e.preventDefault();
replaceSelectedText(strcon(getSelectionText()));
}
});
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
function strcon(givenString) {
var b = '';
var a = givenString;
for (i = 0; i < a.length; i++) {
if (a.charCodeAt(i) >= 65 && a.charCodeAt(i) <= 90) {
b = b + a.charAt(i).toLowerCase();
}
else
b = b + a.charAt(i).toUpperCase();
}
return b;
}
function replaceSelectedText(replacementText) {
var sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
range.insertNode(document.createTextNode(replacementText));
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
range.text = replacementText;
}
}
我现在拥有的代码似乎改变了实际文本的外观,而不是实际更改它。例如,当我在Facebook上按某个键时,文本似乎已经更改,但是当我按回车键时,文本会恢复到以前的状态。
我相信问题出在功能replaceSelectedText
,但我不确定如何解决它。
有什么想法吗?
请不要使用JQuery。
https://jsfiddle.net/1rvz3696/
你必须让你的textarea
元素替换其中的值。这就是您的replaceSelectedText
函数应该的样子,
function replaceSelectedText(text) {
var txtArea = document.getElementById('myTextArea');
if (txtArea.selectionStart != undefined) {
var startPos = txtArea.selectionStart;
var endPos = txtArea.selectionEnd;
selectedText = txtArea.value.substring(startPos, endPos);
txtArea.value = txtArea.value.slice(0, startPos) + text + txtArea.value.slice(endPos);
}
}
这是小提琴。
如果没有特定的id
,你可以替换txtArea
。
var txtArea = document.activeElement;
还有另一个小提琴
相关文章:
- Servlet对浏览器上显示的纯文本Javascript的响应
- 删除选定文本javascript前后的特定文本
- 在两个括号内插入文本 - Javascript
- 获取文本javascript+iframe
- 语音到文本JavaScript,HTML5
- 使用谷歌融合表格地图的网页文本/JavaScript未显示
- 在显示和隐藏文本(javascript)之间切换
- 使用哈希标记保存文本(Javascript - PHP - MySQL)
- 停止闪烁文本 JavaScript
- 如何计算一个字母在文本javascript中出现的次数
- 有效地突出显示文档中的文本 (JavaScript)
- 将变量传递给文本 javascript
- 如何暂停文本 Javascript / var textarray
- 从段落中搜索文本 - Javascript
- 如何使用 id 输入类型=“文本”JavaScript 中的值设置自动 2 个十进制数
- 替换文本 JavaScript .append()
- 语音到文本JavaScript识别医学词典
- 在提取的文本 JavaScript 中搜索关键字
- 如何在HTML中将文本javascript显示为正常正文的一部分
- 单击图像时更改段落文本(Javascript)