2013-05-02 128 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())沒有撤消功能