用jQuery替换textarea中的多个字符串

时间:2014-05-09 14:06:32

标签: jquery html string dictionary replace

我有一个可以替换textarea中多个字符串的工作代码。 但是它只替换在我的textarea中写入onLoad的字符串。

我想将一些文本粘贴到textarea中,然后替换它。 我做错了什么?

see: http://jsfiddle.net/yXm5P/

这是我的HTML:

<input type="button" class="change" value="change all">

<textarea class="input">Schwarz -- doesn't work for text, that was pasted into textarea, onLoad text only....why???</textarea>

这是我的剧本:

$(".change").click(function() {
var dictionary= {
"Schwarz":"#000000",
"Braun":"#6F3E18",
"Beige":"#D4BE8D",
"Grau":"#838383",
"Weiß":"#FFFFFF",
"Dunkelblau":"#0000A0",
"Blau":"#345AFF",
"Hellblau":"#32CAEB",
"Türkis":"#22A2A4",
"Grün":"#25B53A",
"Gelb":"#FFFC00",
"Orange":"#FF6501",
"Rot":"#EA0001",
"Pink":"#ED008C",
"Hell Lila":"#9349AA",
"Dunkel Lila":"#663376",
"Mehrfarbig":"#mcol"   
};

$("body *").each( function(){
    for( var ptrn in dictionary){
        $(this).text( $(this).text().replace(new RegExp(ptrn ,"g"), dictionary[ptrn] ) );
    }
});
      alert( "done" );


});

2 个答案:

答案 0 :(得分:4)

.text()不是获取/设置textarea值的正确方法。 .val()是。

使用正确的功能,应该会出现正确的结果;)

答案 1 :(得分:1)

这里有jsFiddle的正确版本和.val()选择器: JSfiddle replace text

$(this).val( $(this).val().replace(