Press shift and enter for a new line

By default, pressing Enter or Shift and Enter will generate a new line for a textarea element.

In some cases such as an inline editable element, or a messaging application, you would like to submit the data when user presses Enter. The only way to generate a new line is to press Shift and Enter.

Assume that we have the following textarea element:

<textarea id="message"></textarea>

To prevent the default behavior of pressing the Enter key, we can handle the keydown event:

const ele = document.getElementById('message');

ele.addEventListener('keydown', function(e) {
    // Get the code of pressed key
    const keyCode = e.which || e.keyCode;

    // 13 represents the Enter key
    if (keyCode === 13 && !e.shiftKey) {
        // Don't generate a new line

        // Do something else such as send the message to back-end
        // ...

In the demo below, pressing Enter will do nothing:


Might be useful