替换多个保持正确光标位置的字母

时间:2018-08-13 11:19:25

标签: javascript jquery

例如,我正在尝试将"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>

有帮助吗?

1 个答案:

答案 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/

希望有帮助!

相关问题