2013-01-17 104 views
-1

基本上我使用的SCEditor,并希望在论坛帖子或文章评论中称为“引用”的按钮,它从信息中抓取文本并将其粘贴到textarea中,我有此代码:使用javascript填充文本区域

<script type="text/javascript"> 
jQuery.noConflict(); //disable global $ for jQuery 
jQuery(document).ready(function($){ 
    $(function(){ 
    $('#quote').click(function() { 
     $('textarea').sceditor('instance').insert("[quote=admin]Some text[/quote]"); 
    }); 
    }); 
}); 
</script> 

现在,它会把“[quote = admin]一些文本[/ quote]”放到textarea中。问题是我需要以某种方式进行动态变化,所以如果这有意义,我不必在每个评论上面复制该代码。所以,而不是这个:

insert("[quote=admin]Some text[/quote]"); 

该部分将抓住从下面的框中的所有文本呢?而不是我手动将帖子中的文字替换为引用的位。

那么基本上点击引用链接基本上取代上面引用的位与不同div的内容?

+0

这样像你一样正在朝着解决方案迈进。什么是问题?我不明白你在问什么。 –

+0

你能澄清你的问题吗?你也可以发布html代码或用于生成它的脚本? – SnareChops

+0

我的问题是我如何用元素内容替换“[quote = admin]一些文本[/ quote]”?像一个div例如? – NaughtySquid

回答

0

你可以在这个简单的例子

<textarea id="ta" rows="5" cols="20"> 
    [quote=admin]Some text[/quote] 
</textarea> 
<br /> 
<input type="button" value="Click Me" onclick="rep()" /> 
<br /> 
<div id="dv" style="width:100px; height:100px; border:black 1px solid;"> 
    Some div content 
</div> 

<script type="text/javascript"> 
    function rep() { 
    var tatxt = $("#ta").val(); 
    var dvtxt = $("#dv").html(); 
    var newtxt = tatxt.replace(/\[quote\=admin\].*?\[\/quote\]/ig, dvtxt); 
    $("#ta").val(newtxt); 
    } 
</script> 

You can see it work here使用正则表达式等。

0

这取决于您的条目的结构。假设“quote”按钮和div id =“entry”位于嵌套在父级或其他容器中的同一级别上。

<div id="wholeThing"> 
    <div id="entry"> ....... </div> 
    <!-- other stuff goes here --> 
    <input type="button" name="quote" ......> 
</div> 

然后你就可以用这个去:

$(this).parent().find("#entry").text(); 

如果你确切地知道内容所在,你可以在层次结构中的前一元素进行迭代。

$(this).prev().prev().text(); // if content container is 2 elements in front 

对于按钮单击处理程序,你可以设置一个类或使用其名称属性:

$('div input[name="quote"]').click(function() { // for name attribute 
    $('textarea').sceditor('instance').insert("[quote=admin]Some text[/quote]"); 
}); 

以一级等于所有的“报价”按钮:

$('.className').click(function(){ ... 

如果是每个条目中唯一的输入元素:

$('div input').click(function() { ...