Solusi mudah & elegan:
Pertama, menekan Enterdi dalam textarea tidak mengirimkan formulir kecuali Anda memiliki skrip untuk membuatnya melakukannya. Itulah perilaku yang diharapkan pengguna dan saya sarankan untuk tidak mengubahnya. Namun, jika Anda harus melakukan ini, pendekatan termudah adalah dengan menemukan skrip yang membuat Entermengirimkan formulir dan mengubahnya. Kode akan memiliki sesuatu seperti
if (evt.keyCode == 13) {
form.submit();
}
... dan Anda bisa mengubahnya menjadi
if (evt.keyCode == 13 && !evt.shiftKey) {
form.submit();
}
Di sisi lain, jika Anda tidak memiliki akses ke kode ini karena alasan tertentu, Anda perlu melakukan yang berikut untuk membuatnya berfungsi di semua browser utama bahkan jika tanda sisipan tidak ada di akhir teks:
jsFiddle: http://jsfiddle.net/zd3gA/1/
Kode:
function pasteIntoInput(el, text) {
el.focus();
if (typeof el.selectionStart == "number"
&& typeof el.selectionEnd == "number") {
var val = el.value;
var selStart = el.selectionStart;
el.value = val.slice(0, selStart) + text + val.slice(el.selectionEnd);
el.selectionEnd = el.selectionStart = selStart + text.length;
} else if (typeof document.selection != "undefined") {
var textRange = document.selection.createRange();
textRange.text = text;
textRange.collapse(false);
textRange.select();
}
}
function handleEnter(evt) {
if (evt.keyCode == 13 && evt.shiftKey) {
if (evt.type == "keypress") {
pasteIntoInput(this, "\n");
}
evt.preventDefault();
}
}
// Handle both keydown and keypress for Opera, which only allows default
// key action to be suppressed in keypress
$("#your_textarea_id").keydown(handleEnter).keypress(handleEnter);