2013-05-02 43 views
-1

我想让用户双击我网页上的li元素,然后将li文本添加到下面的textarea中。jQuery中的append()函数

用户可以双击多个li项目。每次发生这种情况,新项目都会附加到textarea中列表的后面。

我在textarea中有一些默认文本:“双击手写插入的电影名称。”

因此,下面的HTML代码:

<!-- there is a list before this which I have not included --> 

<div id="chosen"> 

<form action="process.php?stage=4" method="post"> 

<textarea name="g" row="5">Double click on movie name in list above to insert.</textarea> 

<input type="submit" /> 


</form> 

</div> 

和jQuery:

$(document).ready (function(){ 
$('li').bind('dblclick', function(){ //#accordion 

    var text = $(this).html() + "; "; 
    $("textarea").append(text); 

    }); 

}); 

的代码在正常circumtances绝对有效,但停止时,我在textarea的点击修改其内容的工作。这是为什么?即使我触摸了textarea的内容,是否有办法让代码正常工作?

(2) 另一方面,为什么下面的代码不起作用?我在发现append()方法之前尝试了这一点。它与$(this)范围有关吗?

$(document).ready (function(){ 
$('li').bind('dblclick', function(){ //#accordion 

    var text = $(this).html() + "; "; 
    $("textarea").html(function() { //.chosen 

     var currenthtml = $(this).html(); // retrieve the current HTML first 
     currenthtml += text; 
     return currenthtml;  }); 

    }); 

}); 

(3)另外,我怎么程序功能允许,如果用户已经双击锂元素,其包含到文本区域,撤销,列入?有没有一种方法可以让我做与append()相反的方法?

+0

只询问一个问题职位 – 2013-05-02 12:06:48

回答

2

只是你的问题2)

的HTML()函数是用来获取或插入文字的HTML标签(例如一个答案:<div></div>); textarea的内容不是html。相对应的是:

$("textarea").val("Hello World!"); 

关于第一个问题,我做了一个小提琴:http://jsfiddle.net/nhKwQ/和它完美的作品(在Chrome 26测试),即使我点击进入textarea的。你可以尝试将你的行为重现到小提琴中吗?

好吧,你是对的编辑时,它不工作了......

编辑::它的工作原理与VAL()函数:

$(document).ready(function() { 
    $('li').bind('dblclick', function() { //#accordion 

     var text = $(this).html() + "; "; 
     $("textarea").val($("textarea").val() + text); 

    }); 

}); 

http://jsfiddle.net/nhKwQ/1/

1

作为问题1的回答:

尝试以下面的方式设置值而不是a ppend方法。

$("[name=g]").val(text); 

由于某种原因,它似乎失去了它将注意力集中在textarea元素上。

通过使用[name = g],它将查找具有该特定名称的元素并指定一个值。

你也可以使用以下方法来更加具体:

$("textarea[name=g]").val(text); 

这也应该解决您的问题#3。

0

在这一行你的第二个问题

var text = $(this).html() 

this指向`li元素,但在

var currenthtml = $(this).html(); 

this对于textarea元素,而不是li元素

您第三个问题。您将不得不手动将textarea的值恢复到之前的状态(使用.append())没有撤消功能