2012-01-31 15 views
8

con jQuery, he añadido un área de textoárea de texto no se actualiza

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

Ok, y cambiar la "prueba" de texto a "prueba de 01". Pero cuando intento

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

Me sale "prueba" y no "prueba 01". ¿Por qué?

+2

¿Qué es #description? –

+0

¿Cómo cambiaste el texto de 'textarea'? ¿Dónde está el código? – ShankarSangoli

Respuesta

8

dan la textarea un id y luego cambiar su valor con la función val:

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

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

Perfecto, estaba usando $ ("# myTextArea"). Html (''); y podría usar $ ("# textoObs"). val (''); y funciona! –

3

que realmente parece que se quiere hacer esto:

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

Y luego esto:

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

De lo contrario, sólo estás añadiendo el interior de textarea lo #description es, y luego tratando de obtener el valor .text de ... todo eso (lo que sea).

Si agrega un id al textarea, puede ser más específico con su selección y obtener el valor de texto que está buscando.

8

Como se dice en la .text() doco page, "Para establecer u obtener el valor de texto de elementos de entrada o de área de texto, utilice el .val() método."

Usted no dice cómo cambia el texto, sino que debería estar haciendo esto:

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

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

Tras señalar que "#description" es el contenedor del área de texto, y es necesario seleccionar el área de texto en sí para obtener el valor. Por supuesto, lo anterior no funcionará si tienes más de un área de texto en ese contenedor, por lo que sería mejor si pudieras asignarle un ID a la nueva área de texto y luego seleccionar en función de eso.

+0

'# description' no es el' textarea', es algo que lo contiene. – gdoron

+0

Gracias @gdoron, sí, lo había notado y estaba editando mi respuesta mientras publicabas el comentario. – nnnnnn

3

Usuario .val() en lugar de .text().

Si tiene única área un texto añade que puede hacer

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

caso de prueba: http://jsfiddle.net/UzK59/

O

Si está realizando adiciones más de un área de texto

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

y luego

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

caso de prueba: http://jsfiddle.net/UzK59/1/

para ajustar el valor que puede hacer

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

la esperanza que esto le ayuda.

Cuestiones relacionadas