2012-01-31 12 views
8

con jQuery, ho aggiunto una textareatextarea non aggiorna

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

Ok, e posso cambiare "test" testo "test 01". Ma, quando provo

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

Ottengo "test" e non "test 01". Perché?

+2

che cos'è #descrizione? –

+0

Come hai cambiato il testo di 'textarea'? Dov'è il codice? – ShankarSangoli

risposta

8

dare il textarea un id e quindi modificare il suo valore con la funzione val:

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

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

Perfetto, stavo usando $ ("# myTextArea"). Html (''); e potrei usare $ ("# textoObs"). val (''); e funziona! –

3

Sembra veramente si vorrebbe fare questo:

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

E poi questo:

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

In caso contrario, si sta solo aggiungendo il textarea all'interno di qualsiasi #description è, e poi cercando di ottenere il valore .text di ... tutto ciò (qualunque esso sia).

Se si aggiungeallo textarea, è possibile essere più specifici con la selezione e ottenere il valore di testo che si sta cercando.

8

Come si dice sul .text() doco page, "Per impostare o ottenere il valore di testo di elementi di input o di textarea, utilizzare il .val() metodo."

Tu non dici come si modifica il testo, ma si dovrebbe fare questo:

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

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

sottolineando che "#Description" è il contenitore del textarea, ed è necessario selezionare la textarea in sé per ottenere il valore. Ovviamente quanto sopra non funzionerà se si ha più di una textarea in quel contenitore, quindi sarebbe meglio se potessi assegnare la nuova textarea a id e quindi selezionare in base a quella.

+0

'# description' non è il' textarea', è qualcosa che lo trattiene. – gdoron

+0

Grazie a @gdoron, sì, l'avevo notato e stavo modificando la mia risposta mentre stavi postando il commento. – nnnnnn

3

Utente .val() anziché .text().

Se avete unica area un testo aggiunto si può fare

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

Test Case: http://jsfiddle.net/UzK59/

O

Se si desidera aggiungere i più di un'area di testo

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

e poi

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

Test Case: http://jsfiddle.net/UzK59/1/

per impostare il valore che si può fare

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

Spero che questo ti aiuta.