例如,我正在尝试将"abc"
替换为"d"
。
示例代码仅替换光标位置的一个字母,但我需要用相同的想法替换多个字母。
$("#text").keypress(function(event) {
if (event.key === "a") {
event.preventDefault();
insertTextAtCursor(this, "b");
}
});
function insertTextAtCursor(el, text) {
var val = el.value, endIndex, range;
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
endIndex = el.selectionEnd;
el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
el.selectionStart = el.selectionEnd = endIndex + text.length;
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
el.focus();
range = document.selection.createRange();
range.collapse(false);
range.text = text;
range.select();
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="text"></textarea>
有帮助吗?
答案 0 :(得分:0)
非常简单,这里的问题是我们需要能够读取输入的值,而不是按下键。
//All the words that you need to place :)
let wanted = [
"abc",
"omg",
"x"
];
let replaceBy = "Test!";
$("#text").keyup((event) => {
let old = $("#text").val();
$("#text").val(old.replace(new RegExp(wanted.join('|'), "gi"), replaceBy));
});
您有一个可测试的小提琴,甚至可以替换多个单词/字符。 https://jsfiddle.net/fr24napw/24/
希望有帮助!