2011-08-25 31 views
12

Così ho una visione rasoio:Textarea non ricevendo testo aggiornato in jQuery

@{ 
    int i=1; 
    foreach(var story in Model.Storylines) 
    { 
     <span style="float:left;">Storyline @i</span> <span style="float:right; margin-right:5px;">Character Count: @story.CharCount</span><br /><br /> 
     <textarea [email protected]("entry"[email protected]) rows="5" style="width:730px; overflow:auto;">@story.Description</textarea><br /><br /> 
     i++; 
    } 
} 

Così la textarea con id ENTRY1 ha una descrizione del tipo "questa è una storia" quando la pagina iniziale carichi. Una volta che si digita qualcosa in quella zona di testo, e poi ha colpito un tasto la cui unica funzione è:

alert($("#entry1").text()); 

ho ancora "questa è una storia". Perché la textarea non viene aggiornata con il testo che ho digitato?

+0

Sembra un bug jQuery (o stranezza? :). In IE .text() restituisce il valore DOM aggiornato, ma Chrome e FF richiedono l'uso di .val(). Sicuramente d'accordo .val() ha senso. Vedi qui: http://jsfiddle.net/SSYpF/ – nothingisnecessary

risposta

24

Si desidera utilizzare $("#entry1").val() per ottenere il testo all'interno dell'area di testo.

+0

ARGH! Non posso credere di non averlo pensato. Grazie ... accetterò la tua risposta non appena scade il tempo limite. –

6

Si vuole utilizzare .val() al contrario di .text(), come quello è come accedere al contenuto di un <textarea>:

alert($("#entry1").text()); 

dovrebbe essere:

alert($("#entry1").val()); 
3

.VAL torneranno il contenuto dell'area di testo

http://api.jquery.com/val/

Il metodo .VAL() viene utilizzato principalmente per ottenere i valori di elementi di modulo

http://api.jquery.com/text/

A differenza del metodo .html(), .text() può essere utilizzato in entrambi i documenti XML e HTML . Il risultato del metodo .text() è una stringa contenente il testo combinato di tutti gli elementi abbinati.

3

Penso che il testo il motivo per cui .text() non funziona è perché la proprietà text ottiene il valore di testo tra il tag textarea e questo valore non viene aggiornato quando si modifica il valore dell'area di testo.

Il testo inserito è memorizzato nell'attributo value del controllo textarea.

qui è un fiddle che mostra l'esempio. jQuery's val() preleva lo stesso valore di attributo, quindi si può anche usare val()