JQuery How to replace strings inside a textarea?
13,026
Solution 1
I believe you are looking for something like this (click here to test this fiddle):
$('#event_content').val(
$('#event_content').val().replace(/\b(http(s|):\/\/|)(www\.\S+)/ig,
"<a href='http\$2://\$3' target='_blank'>\$3</a>"));
Solution 2
$(function(){
var old = $('#event_content').val();
var news = '<a href="http://'+old+'" target="_blank">'+old+'</a>';
$('#event_content').val(news);
});
Note that the <a>
will not be displayed in textarea, but instead plain text will be shown.
Demo: http://jsfiddle.net/3xEh2/1/
Solution 3
var link = $("#event_content");
var text = link.html();
var linktext = '<a href="' + text + '" target="_blank">' + text + '</a>'
link.html(linktext);
Solution 4
This will replace all the links and leave the other text there as well.
$(function(){
var old = $('#event_content').val();
var news = old.replace("www.london2012.com", '<a href="http://www.rio2016.com" target="_blank">www.rio2016.com</a>');
$('#event_content').val(news);
});
Comments
-
Harry almost 2 years
Current Textarea:
<textarea id="event_content"> This text area could be full of information..www.london2012.com And might contain upto 5 links that all need updating. www.rio2016.org Link already converted. this should be left. <a href="http://www.thetimes.co.uk" target="_blank">www.thetimes.co.uk</a> </textarea>
Desired Textarea after jquery: all links to be cleaned/replaced with tags and target attr
<textarea id="event_content"> This text area could be full of information <a href="http://www.london2012.com" target="_blank">www.london2012.com</a> And might contain upto 5 links that all need updating. <a href="http://www.rio2016.org" target="_blank">www.rio2016.org</a> Link already converted. this should be left. <a href="http://www.thetimes.co.uk" target="_blank">www.thetimes.co.uk</a> </textarea>
21 July 2012 - Ωmega's code worked a treat thanks, but could be improved by leaving already converted links?
-
magritte almost 12 yearsYour original question was simple, this is somewhat trickier... have a look at using a Regex to identify the url's in the body of the text, then replace them in a similiar manner to Cristy's answer. This question might help stackoverflow.com/questions/5461702/regex-to-find-url-in-a-text
-
Harry almost 12 yearsYes regex would do it. I can do it in php but not jquery?? preg_replace('!(http://[a-z0-9_./?=&-]+)!i', '<a href="$1">$1</a> ', $text." ");
-
-
Harry almost 12 yearsGood thanks but there is other info in the textarea so I have updated the original question.
-
Harry almost 12 yearsYes I believe that is the code I was looking for! Could your regex be tweaked to not include links already converted?
-
Ωmega almost 12 years@Harry - That would have to be a loop going through all links with storing previous matches and conditional regex replace.