Search code examples
javascriptinnerhtmlcontenteditableonkeyup

Why does this code work for an input text box but not for a contenteditable div?


I have a snippet of Javascript code as follows:

<div id="TestControl" contentEditable="true" style="width:200px; position:absolute; left:100; top:100; border: 1px solid #000;"></div>
<div style="position:absolute; left:100; top:200; width:200px; border:1px solid #000; padding: 5px 5px 5px 5px;" id="displaydiv" ></div>
<script>
document.getElementById("TestControl").onkeyup = function() {
document.getElementById("displaydiv").innerHTML = this.value;   
}
</script>

This code works fine if I replace the contenteditable div with an input text box. Why the disparity?

Thanks for looking :)


Solution

  • A content div does not have a property called value

    <div id="TestControl" contentEditable="true" style="width:200px; position:absolute; left:100; top:100; border: 1px solid #000;"></div>
    <div style="position:absolute; left:100; top:200; width:200px; border:1px solid #000; padding: 5px 5px 5px 5px;" id="displaydiv" ></div>
    <script>
    document.getElementById("TestControl").onkeyup = function() {
    document.getElementById("displaydiv").innerHTML = this.value || this.textContent || this.innerText || this.innerHTML;   
    }
    </script>