Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单文本区域字符串替换jquery脚本_Javascript_Jquery_Replace - Fatal编程技术网

Javascript 简单文本区域字符串替换jquery脚本

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符号'。这是可行的,除了每次有替换时光标位置移动到文本区域的最后一个字符。当有替换项时,我希望光标正好位于'之后。

我正在尝试制作一些简单的jquery脚本来替换textarea中的特定字符串。我知道:

$("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时,我会得到非常奇怪的东西。