2009-12-11 11 views
6
<form> 
<textarea name="test" value="no"> 
hi 
</textarea> 
<input type="submit" /> 
</form> 

ciao o no e motivo?Quale valore verrà inviato da <textarea> e perché?

Ho fatto questa domanda perché vedo che gli editor javascript usano textarea.value = html; per ripristinare il contenuto quando si invia, perché lo fanno se l'attributo value è inutile?

risposta

18

hi inviato. Non esiste un attributo value per il tag <textarea>. Vedi W3School's textarea tag reference per i dettagli.

Per rispondere alla tua domanda sul perché vedi librerie javascript che accedono alla proprietà value di un elemento DOM textarea, devi comprendere che HTML e il DOM (Document Object Model) che gli accessi javascript sono 2 animali diversi. In HTML il valore di un <textarea> è il suo contenuto. In DOM, il valore di un nodo textarea è contenuto nella sua proprietà value. Sebbene i nomi di proprietà DOM spesso associno nomi di attributi HTML 1: 1, non sempre e questo è solo un esempio.

+0

Cerca 'wysiwyg.textarea.value = html;' in questo file: http: //www.peej.co.uk/sandbox/wysiwyg/wysiwyg.js – user198729

+1

@unknown (google): Quello è javascript, non HTML. Contesto diverso In quel contesto, un elemento DOM textarea ha una proprietà 'value'. – Asaph

+0

Prova il mio esempio, Asaph: in Firefox 3.1 e IE 6 avvisa 'ciao'. – JAL

0

Il valore di un'area di testo è il suo contenuto. La proprietà 'value' non ha un significato standard per questo tag, quindi un modulo o JavaScript otterrà 'hi' dalla textarea. Ecco una dimostrazione di questo in JavaScript.

<form> 
<textarea name="test" value="no" id='ff'> 
    hi 
</textarea> 
<input type="submit" /> 
</form> 
<br> 
<a onclick='showVal("ff")'>Show Value</a> 
<script> 
function showVal(id){ 
    var snib=document.getElementById(id); 
    alert(snib.value); 
    } 
</script> 
3

In una risposta POST, un textarea risponderà con il contenuto di innerHTML. Tuttavia, se hai impostato un attributo value su textarea e provi a ricevere textarea.value in JavaScript, riceverai il contenuto dell'attributo value.

Un browser non deve mai visualizzare l'attributo value di un valore textarea nell'unità fisica textarea perché non è standard. Il tag textarea opera in modo diverso rispetto ai tag input. Suppongo che lo faccia perché il tag input non supporta le interruzioni di riga.

Il valore un utente modifica sarebbe il valore innerHTML (html in jQuery), non l'attributo value come fanno con input campi.

2

Un paio di altri punti -

Tutti i browser che supportano JavaScript ritorno leggere i valori/scrittura per textarea.value, coerenti con gli elementi di input. Ma non è possibile utilizzare getAttribute ('valore') o setAttribute ('valore') con un'area di testo.

È anche possibile leggere la proprietà 'tipo' di una textarea, sebbene il tipo non sia un attributo.

Se si imposta la proprietà value, textarea.value = string; ** E 'equivilent a ** textarea.appendChild (document.createTextNode (string)) -

una textarea non può contenere altri elementi, solo nodi di testo.

Il testo nella textarea impostata dal valore sarà i caratteri letterali della stringa, mentre l'impostazione della proprietà innerHTML sfuggirà a qualsiasi entità e ridurrà al minimo lo spazio bianco.

Problemi correlati