2012-01-31 54 views
8

使用jQuery,我加了一个textareatextarea的不更新

$('#description').append('<textarea rows="8" cols="40">test</textarea>'); 

好吧,我改 “测试” 文本 “测试01”。但是,当我尝试

var cadena = $('#description').text(); 
alert(cadena); 

我得到“测试”,而不是“测试01”。为什么?

+2

什么是#description? – 2012-01-31 03:58:28

+0

您是如何更改'textarea'文本的?代码在哪里? – ShankarSangoli 2012-01-31 04:02:41

回答

8

textarea一个ID,然后改变它的值与val功能:

$('#description').append('<textarea id="xxx" rows="8" cols="40">test</textarea>');  
$('#xxx').val('test01'); 

//... later on 
alert($('#xxx').val()); 
+0

完美,我使用$(“#myTextArea”)。html('');我可以使用$(“#textoObs”)。val('');和工作! – 2016-08-18 01:13:53

3

它真的象你想做到这一点:

$('#description').append('<textarea id="newTextArea" rows="8" cols="40">test</textarea>');¬ 

然后将此:

var cadena = $('#newTextArea').text(); 
alert(cadena); 

否则,你只是附加的任何#description是里面的textarea,然后试图获得...的所有(不管它是什么)的.text值。

如果您将id添加到textarea,您可以更具体地选择您的选择,并获取您要查找的文本值。

8

像它说的.text() doco page,“设置或获取输入或textarea元素的文本值,使用.val()方法。”

你不说你怎么更改文本,但你应该这样做:

$('#description textarea').val("test 01");  // change the text 

var cadena = $('#description textarea').val(); // retrieve the current text 

注意到“#description”是的textarea的容器,你需要选择的textarea本身获得价值。当然,如果你在这个容器中有多个textarea,上面的方法将不起作用,所以如果你可以给新的textarea分配一个id然后根据它选择它会更好。

+0

'#description'不是'textarea',它是可以容纳它的东西。 – gdoron 2012-01-31 04:08:04

+0

谢谢@gdoron,是的,我注意到这一点,并在发布评论时编辑我的答案。 – nnnnnn 2012-01-31 04:12:15

3

用户.val()而不是.text()

如果您有只有一个文本区域附加你可以做

var cadena = $('#description textarea:first-child').val(); 

测试用例:http://jsfiddle.net/UzK59/

OR

如果要追加多个文本区域

var counter = 0; 
$('#description').append('<textarea id="textArea'+ counter +'" rows="8" cols="40">test</textarea>'); 
counter++; 

然后

$('#textArea' + counter).val(); //Considering counter is 0 (Zero) here 

测试用例:http://jsfiddle.net/UzK59/1/

达到设定值时,你可以做

$('#textArea' + counter).val('New Value') 

希望这有助于你。