When user hit enter, it creates div for line break, but this interferes with my markup, so I have to use br to imitate the line break. However, I found manipulating contenteditable div's html to insert br could cause some unnatural result position of the caret. Therefore I decide to use shift+enter to creates those br.
So tried:
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<div id="inputbox" contenteditable="true" ></div>
CSS:
<style>
#inputbox[data-placeholder]:empty:before {
content: attr(data-placeholder);
float: left;
color: rgba(134,134,134,0.6);
}
#inputbox{
background-color:white;
display:block !important;
display:inline-block;
margin-top:2px;
min-height: 60px;
text-align: center;
white-space: break-word !important;
width:521px;
padding: 12px;
border:1px solid #ffcc99;
border-radius:3px;
text-align: left;
vertical-align: bottom;
}
#inputbox:focus{
outline-style:solid;
outline-width:0px;
line-height:normal;
}
</style>
Javascript
<script>
var obj=$("#inputbox");
obj.keydown(function(e) {
if (e.keyCode === 13) {
e.preventDefault();
var keyEvent = new KeyboardEvent("keypress", {keycode : 13, shiftKey: true});
obj.dispatchEvent(keyEvent);
}
});
</script>
Could anyone help me please, I've stuck on this for three days.Thanks in advance.