JQuery Copy text&粘贴到textarea

时间:2009-07-01 21:39:03

标签: javascript jquery

我创建了一个javascript函数,它将占用隐藏的跨度,复制该范围内的文本并将其插入到网站上的单个textarea标记中。我已经用JavaScript编写了一个函数来执行此操作(好吧,有点,只需点击几下),但我知道有更好的方法 - 任何想法?该行为类似于Twitter的转推,但使用博客上的帖子部分代替。哦,我也在标题中呼叫jquery。

<script type="text/javascript">
function repost_submit(postID) {    
    $("#repost-" + postID).click(function(){
        $("#cat_post_box").empty();
        var str = $("span#repost_msg-" + postID).text();
        $("#cat_post_box").text(str);
    });
}
</script>

3 个答案:

答案 0 :(得分:2)

根据您问题中的评论,我假设您在HTML中有这样的内容:

<a href="#" onclick="repost_submit(5);">copy post</a>

我也假设因为你传递了一个帖子ID,每页可以有多个。

jQuery的一部分优点是你可以在不使用内联Javascript事件的情况下为元素集做很酷的事情。这些现在被认为是一种不好的做法,因为最好将Javascript与您的演示代码分开。

然后,正确的方法是做这样的事情:

<a href="#" id='copy-5' class='copy_link'>copy post</a>

然后你可以有更多看起来相似的东西:

<a href="#" id='copy-5' class='copy_link'>copy post</a>
<a href="#" id='copy-6' class='copy_link'>copy post</a>
<a href="#" id='copy-7' class='copy_link'>copy post</a>

最后,您可以使用jQuery编写代码来执行以下操作:

$(function() { // wait for the DOM to be ready
    $('a.copy_link').click(function() { // whenever a copy link is clicked...
        var id = this.id.split('-').pop(); // get the id of the post
        var str = $('#repost_msg-' + id); // span not required, since it is an ID lookup
        $('#cat_post_box').val(str); // empty not required, and val() is the proper way to change the value of an input element (even textareas)
        return false;
    });
});

即使页面中只有一个帖子,这也是最好的方法。您的代码的部分问题在于,在第一次单击时它会对函数进行BINDS,在随后的单击中,它最终会被调用。您可以通过将其更改为仅在document.ready中来进行快速而肮脏的修复。

答案 1 :(得分:1)

$("#repost-" + postID).click(function(){
  $("#cat_post_box").val(''); // Instead of empty() - because empty remove all children from a element.
    $("#cat_post_box").text($("#repost_msg-" + postID).text());//span isn't required because you have and id. so the selector is as efficient as it can be.
});

将所有内容包装在$(document).ready(function(){/ 在此处插入代码 /})中,以便它绑定到$(“#repost-”+ postID)加载DOM时的按钮或链接。

答案 2 :(得分:0)

我在Paolo的例子中遇到问题,当我点击链接时,#cat_post_box中出现的文字是“对象对象”。一旦我将“.text()”添加到该语句的末尾,我就会工作。

var str = $('#repost_msg-' + id).text();

谢谢你的例子保罗!