2012-08-02 3 views
5

Sto cercando di leggere il contenuto di una textarea, ma .val() non funziona per la mia area di testo. Sarei felice se qualcuno avesse una soluzione per me. Ecco il mio codice:JQuery: .val() non funziona per textarea

HTML:

<textarea id="details" class="required" rows="5"></textarea> 

JS:

$.ajax({ 
     type: "GET", 
     url: "reserve.php", 
     data: { 
      details : $('#details').val(), 
      ... 
     }, 
     ... 
}); 

Grazie!

+0

Forse hai un altro elemento con id = "dettagli" nella tua pagina? – Rodik

+0

.val() sta lavorando su textareas, controlla se l'ortografia è corretta e non ha alcun "," sull'ultimo parametro – Ziinloader

+0

'.val()' funziona bene nel senso che viene restituito il valore effettivo della textarea. Definire "non funziona"? –

risposta

5

val() funziona bene ... È necessario avere il tuo errore altrove.

Example

probabilmente la selezione in non corrisponde. Verificare la presenza di errori di battitura e se è stato applicato il prefisso corretto (# per ID o . per classe)

+0

Finalmente una risposta non errata! –

+0

non funziona significa che $ ('# dettagli'). Val() restituisce il valore 'undefined' – Trinityx89x

+1

@ user1571064 Quindi il tuo selettore non è corretto. '$ ('# details')' restituisce una raccolta jQuery vuota, e '.val()' restituirà quindi 'undefined'. –

1

dettagli: encodeURIComponent (. $ ('# Dettagli') val())

5

Questa è una richiesta valida, come ho sperimentato questo stesso problema e può riferire quanto segue:

  • No - non è il selettore, un oggetto valido viene restituito
  • No - c'è un solo elemento con questo id
  • No - ci è no HTML non valido o cattivo uso di tag, per quanto ho visto

Sì - c'è una risposta che non è un hack o un codice cattivo:

$ ('# myTextArea') [0] .value

2

Ho avuto lo stesso problema. La soluzione nel mio caso era, c'erano due elementi con l'id "commento". jQuery ha restituito il valore del primo, che era vuoto. Se ho guardato il codice sorgente, ne ho visto solo uno, dal momento che il secondo è stato aggiunto dopo una chiamata AJAX. Ma quando viene cercato nell'ispettore per "commento" (comprese le virgolette) ho visto entrambi gli elementi. Spero che questo ti aiuti anche tu.

1

Stranalmente ho avuto un problema simile cercando di svuotare tutti i textareas. Non era un problema di selezione dato che selezionavo tutti i textari nella pagina con $ ('textarea'). Ho trovato che il seguente ha funzionato: $ ('textarea'). Text ('');

Quindi si può provare ad impostare la textarea con: $ ('textarea'). Text ('my new value');

+0

Questo ha funzionato anche per me ... – Ananth

+0

La tua leggenda! Grazie – James

0

Il mio problema era che stavo usando un selettore di nomi invece di un selettore di id.

, ad es.:

opere:

'content': $(this).find('#text_content').val(), 

non funziona:

'content' : $(this).find('input[name=text_content]').val(), 

Non certo perché il selettore di nome non ha funzionato per textarea (ha funzionato per tutti gli altri campi), ma ci lo avete.