Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 如何查找和替换(或附加)文本到文本区域_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript 如何查找和替换(或附加)文本到文本区域

Javascript 如何查找和替换(或附加)文本到文本区域,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我试图在单击时将文本区域(#提及)中包含的网站url(@user.website)替换为缩短的url。只有当网站(@user.website)实际存在于文本区域中时,它才能执行交换,否则它必须将短url附加到文本区域的末尾 $(function(){ $(".short_url_link").click(function(){ var mention = $("#mention"); var previousText = mention.text(); if (previousT

我试图在单击时将文本区域(
#提及
)中包含的网站url(
@user.website
)替换为缩短的url。只有当网站(
@user.website
)实际存在于文本区域中时,它才能执行交换,否则它必须将短url附加到文本区域的末尾

$(function(){
  $(".short_url_link").click(function(){
  var mention = $("#mention");
  var previousText = mention.text();
  if (previousText.indexOf("<%= @user.website %>") >= 0) {
     var shortURL = $(this).text();
     var regex = new RegExp(("<%= @user.website %>").replace(/\//g, "\\/").replace(/\./g, '\\.'), "i");
     mention.val(previousText.replace(regex, shortURL));
   } else {
     mention.val( mention.val() + ' ' + $(this).text() );
   }
 });
$(函数(){
$(“.short\u url\u link”)。单击(函数(){
var提货=$(“#提货”);
var previousText=提及.text();
如果(上一个文本.indexOf(“”>=0){
var shortURL=$(this.text();
var regex=new RegExp((“”)。替换(//\//g,“\\//”)。替换(//\./g,“\\.”),和“i”);
提提.val(previousText.replace(regex,shortURL));
}否则{
提提.val(提提.val()+“”+$(this.text());
}
});
}))


我的功能不太正确。如果网站URL位于文本区域的中间,则删除新添加的短URL之后的所有内容。如果网站url不存在,它也不会添加正确的文本(似乎添加了以前的选择)。我哪里出错了?

刚刚尝试了你的代码,它可以正常工作:我在页面加载时设置了文本区域的值(value='some text www.google.com some text')。每当我单击链接时,该值将用于替换,而不是文本区域中的当前文本(即使文本区域中的文本已更改),文本区域并不打算使用
value=“”
属性,因此当使用jQuery的
.val()
时,它不会提取该属性。如果您需要某个位置来存储字符串,请使用类似于
data value=“
的内容,并使用
.data('value')
检索它。非常感谢。