Javascript 简单文本区域字符串替换jquery脚本
我正在尝试制作一些简单的jquery脚本来替换textarea中的特定字符串。我知道:Javascript 简单文本区域字符串替换jquery脚本,javascript,jquery,replace,Javascript,Jquery,Replace,我正在尝试制作一些简单的jquery脚本来替换textarea中的特定字符串。我知道: $("textarea").bind("keyup", function() { var text = $(this).val(); text = text.replace(/,,/g, "′"); $(this).val(text); }); 这将,替换为unicode符号'。这是可行的,除了每次有替换时光标位置移动到文本区域的最后一个字符。当有替换项时,我希望光标正好位于'之后。
$("textarea").bind("keyup", function() {
var text = $(this).val();
text = text.replace(/,,/g, "′");
$(this).val(text);
});
这将,
替换为unicode符号'
。这是可行的,除了每次有替换时光标位置移动到文本区域的最后一个字符。当有替换项时,我希望光标正好位于'
之后。我怎么能这样做
这是我的JSFIDLE:
编辑:谢谢你们的帮助。我现在用这个:
这是您最新的小提琴:
if (text.indexOf(",,") > 0) {
...
pos--;
..
关键是使用selectionStart
获取光标的当前位置,然后使用setSelectionRange
将光标放置在该位置
// get current cursor position
var pos = $(this).val().slice(0, this.selectionStart).length;
// replace the text
$(this).val($(this).val().replace(/,,/g, "′"));
// reset the cursor position
this.setSelectionRange(pos, pos);
希望有帮助
更新:
因为两个字符被一个字符替换,所以在上面的代码中,光标位置将向右跳过一个字符。一种解决方法是首先检查是否有“,”组合,然后在前面使用位置作为一个字符
更新的小提琴:
if (text.indexOf(",,") > 0) {
...
pos--;
..
以下是我对它的看法:
可能的重复我想检查一下:看起来也是的重复现在它向右移动了一个字符太多。如果我在文本区域末尾以外的某个地方键入,,我喜欢这种方法的简单性。当我做pos-1时,我会得到非常奇怪的东西。