I'm currently developing my own chat. Now I want to extend my chat input so that when I enter for example :-), it should instantly change to when I write inside my contenteditable div (which makes it more complex).
I've tried to find out how WhatsApp Web does this but I'm not really coming forward. This is my code:
jQuery( document ).ready( function ( $ ) {
$( "#input" ).keypress( function ( e ) {
if ( e.which === 13 && !e.shiftKey ) {
$( "#messages" ).scrollTop( $( "#messages" ).prop( "scrollHeight" ) );
$( "#messages" ).append( "<div class=\"message right\">" + $( this ).html() + "</div>" );
$( this ).html( "" );
e.preventDefault();
}
} );
$( "#input" ).on( "input", function () {
console.log( $( this ).html() );
} );
} );
#messages {
border: 1px solid;
max-height: 200px;
overflow-y: scroll;
}
#messages > div {
margin-bottom: 15px;
padding-left: 3%;
padding-right: 3%;
}
.message.right {
text-align: right;
}
.divider span {
padding: 6px 12px;
text-align: center;
line-height: 1;
background: gray;
color: #fff;
border-radius: 6px;
}
.date-area {
margin-top: -35px;
}
.spacer {
height: 35px;
}
#input {
border: 1px solid;
margin-top: 10px;
width: 100%;
}
[contenteditable=true]:empty:before {
content: attr(placeholder);
display: block;
color: #aaaaaa;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="messages">
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message right">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message left">Testnachricht</div>
<div class="message right">Testnachricht</div>
</div>
<div id="input" contenteditable="true" placeholder="Enter a message"></div>
The interesting thing with WhatsApp Web is that when I press the deletion key, the emoji goes back to :-). How do they do it? Is there an extension? I'd be cool if I didn't need an extension.
Update
I've updated my code and added an input function.