Giải pháp dễ dàng và thanh lịch:
Đầu tiên, nhấn Enterbên trong một textarea không gửi biểu mẫu trừ khi bạn có tập lệnh để làm cho nó làm điều đó. Đó là hành vi mà người dùng mong đợi và tôi khuyên bạn không nên thay đổi nó. Tuy nhiên, nếu bạn phải làm điều này, cách tiếp cận đơn giản nhất sẽ là tìm tập lệnh đang thực hiện Entergửi biểu mẫu và thay đổi nó. Mã sẽ có cái gì đó như
if (evt.keyCode == 13) {
form.submit();
}
... và bạn có thể thay đổi nó thành
if (evt.keyCode == 13 && !evt.shiftKey) {
form.submit();
}
Mặt khác, nếu bạn không có quyền truy cập vào mã này vì một số lý do, bạn cần thực hiện các thao tác sau để làm cho nó hoạt động trong tất cả các trình duyệt chính ngay cả khi dấu mũ không ở cuối văn bản:
jsFiddle: http://jsfiddle.net/zd3gA/1/
Mã số:
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);