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, и я нажимаю на определенную клавишу, текст, кажется, изменился, но затем, когда я нажимаю кнопку ввода, текст возвращается к тому, что было раньше.Изменение выбранного текста через javascript
Я считаю, что проблема связана с функцией replaceSelectedText
, но я не уверен, как ее исправить.
Любые идеи?
Нет JQuery, пожалуйста.
https://jsfiddle.net/1rvz3696/
пожалуйста, вы можете создать jsfiddle или plunker? – brk
@ user2181397 Выполнено и сделано – Dgameman1
Я не понимаю проблему. Я попробовал ваш jsfiddle: я вошел «hello foobar». Я выбираю слово и нажимаю клавишу Shift. Затем слово появляется перед полем ввода как заглавные буквы. Что это за нежелательное поведение? – owler