textarea不会更新

时间:2012-01-31 03:57:03

标签: jquery jquery-selectors textarea

使用jQuery,我添加了一个textarea

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

好的,我将“测试”文本更改为“test 01”。但是,当我尝试

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

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

4 个答案:

答案 0 :(得分:9)

就像在.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然后根据它选择它会更好。

答案 1 :(得分:8)

textarea一个ID,然后使用val函数更改它的值:

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

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

答案 2 :(得分:3)

看起来你真的想要这样做:

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

然后这个:

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

否则,您只需将textarea添加到#description内,然后尝试获取.text的所有值(无论它是什么)。

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

答案 3 :(得分: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')

希望这会对你有所帮助。