2011-09-08 18 views
21

È possibile utilizzare <div contenteditable="true"><a href="page.html">Some</a> Text</div> anziché texarea e quindi passare in qualche modo attraverso il modulo?Può div con contenteditable = true essere passato attraverso il modulo?

idealmente senza JS

+1

possibile duplicato di [Utilizzo di HTML5, come utilizzare i campi contenteditable in un modulo di invio?] (Http://stackoverflow.com/questions/6247702/using-html5-how-do-i-use-contenteditable-fields -in-a-form-submission) – dbn

risposta

18

Using HTML5, how do I use contenteditable fields in a form submission?

contenuto modificabile non funziona come un elemento del modulo. Solo javascript può consentirne il funzionamento.

MODIFICA: In risposta al tuo commento ... Questo dovrebbe funzionare.

<script type="text/javascript"> 
    function getContent(){ 
     document.getElementById("my-textarea").value = document.getElementById("my-content").innerHTML; 
    } 
</script> 


<div id="my-content" contenteditable="true"><a href="page.html">Some</a> Text</div> 

<form id="form" action="some-page.php" onsubmit="return getContent()"> 
    <textarea id="my-textarea" style="display:none"></textarea> 
    <input type="submit" /> 
</form> 

Ho testato e verificato che questo funziona in FF e IE9.

+0

cosa devo fare con JS (non jquerry) per farlo funzionare? \t \t \t \t document.getElementById ('contentTextArea'). Value = document.getElementById ('contentDiv'). Value; questo non funziona – JDDll

+0

Hmm è vero, i div non hanno un attributo "valore". Aggiornerò la mia risposta tra un momento. – smdrager

1

provare questo

document.getElementById('formtextarea').value=document.getElementById('editable_div').innerHTML; 

un esempio completo: -

<script type="text/javascript"> 
    function getContent(){ 
var div_val=document.getElementById("editablediv").innerHTML; 
     document.getElementById("formtextarea").value =div_val; 
    if(div_val==''){ 
    //alert("option alert or show error message") 
    return false; 
    //empty form will not be submit. You can also alert this message like this. 
    } 
     }</script> 

`

<div id="editablediv" contenteditable="true"> 
<a href="page.html">Some</a> Text</div> 
<form id="form" action="action.php" onsubmit="return getContent()"> 
    <textarea id="formtextarea" style="display:none"></textarea> 
    <input type="submit" /> 
</form> 

`

invece di questo si può utilizzare JQuery (se non v'è il limite per utilizzare JQuery per auto-ridimensionamento textarea o qualsiasi editor di testo WYSIWYG)

0

Si potrebbe utilizzare meglio:

<script type="text/javascript"> 
    function getContent(){ 
     document.getElementById("my-textarea").value = document.getElementById("my-content").innerText; 
    } 
</script> 

NOTA: ho cambiato .innerHTML a innerText. In questo modo non ottieni elementi HTML e testo ma solo testo.

Esempio: Ho Inserito "testo", innerHTML dà il valore: "\ r \ n testo". Filtra "testo" ma è più lungo di 4 caratteri. innerText indica il valore "testo".

Questo è utile se si desidera contare i caratteri.

Problemi correlati