contenteditable
ist nicht Bestandteil des form input
Element kann daher nicht über Server wie form-input-elements
zugegriffen werden. Es bedeutet, dass Sie nicht contenteditable
Elementwert in $_POST
/$_GET
aktualisieren hidden
Feldwert, wenn der Wert von contenteditable
geändert wird zugreifen können. Verwenden Sie input
Ereignis. Das Ereignis DOM input
wird synchron ausgelöst, wenn der Wert eines Elements <input>
oder <textarea>
geändert wird. Zusätzlich wird es auf contenteditable
Editoren ausgelöst, wenn sein Inhalt geändert wird.
document.getElementById('mymessage').addEventListener('input', function() {
document.getElementById('hiddenInput').value = this.innerHTML;
console.log(document.getElementById('hiddenInput').value);
});
document.getElementById('hiddenInput').value = document.getElementById('mymessage').innerHTML; //To set the value initially..
console.log(document.getElementById('hiddenInput').value);
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<form action="" method="post" name="theform">
<table width="693" border="1" style="table-layout:fixed;">
<tr>
<td width="683" id="mymessage" contenteditable="true" name="mymessage">Write message here...</td>
</tr>
</table>
<input type="hidden" id='hiddenInput' name='hiddenInput'>
<span class="notranslate"><input type="submit" id="btnSend" name="btnSend" value="Send"></span>
</form>
PHP:
<?php
if (isset($_POST['btnSend']))
{
$getmsg = $_POST['hiddenInput'];
echo $getmsg;
}
?>
Edit: Wie Nate wies darauf hin, es besser ist submit
oder click
zu verwenden (wenn nicht mit form
Umgang) Veranstaltung um den Wert vonfestzulegenElement aus Gründen der Leistung
document.querySelector('[name="theform"]').addEventListener('submit', function(e) {
e.preventDefault(); //Prevented submit action just to demonstrate..
document.getElementById('hiddenInput').value = document.getElementById('mymessage').innerHTML;
console.log(document.getElementById('hiddenInput').value);
})
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<form action="" method="post" name="theform">
<table width="693" border="1" style="table-layout:fixed;">
<tr>
<td width="683" id="mymessage" contenteditable="true" name="mymessage">Write message here...</td>
</tr>
</table>
<input type="hidden" id='hiddenInput' name='hiddenInput'>
<span class="notranslate"><input type="submit" id="btnSend" name="btnSend" value="Send"></span>
</form>
Inspizieren element..Check die Wert von 'hiddenInput' – Rayon
es funktioniert jetzt gut. habe das Skript einfach an die falsche Stelle gesetzt. aber wenn ich den Text nicht bearbeitet habe, wird es nicht echo. was soll ich machen? – Ivan
Überprüfen Sie die Konsole auf Fehler ... Ihr Skript-Tag sollte vor dem Schließen des 'body' Tags sein ... – Rayon