ใช้โซลูชันที่ง่ายกว่าดีกว่า:
ทางออกของทิมด้านล่างดีกว่าฉันแนะนำให้ใช้:
https://stackoverflow.com/a/6015906/4031815
ทางออกของฉัน
ฉันคิดว่าคุณสามารถทำสิ่งนี้ได้ ..
แก้ไข:เปลี่ยนรหัสเพื่อทำงานโดยไม่คำนึงถึงตำแหน่งคาเร็ต
ส่วนแรกของรหัสคือการได้รับตำแหน่งลูกศร
Ref: วิธีการรับตำแหน่งเครื่องหมายรูปหมวก (ไม่ใช่พิกเซล) ใน textarea เป็นตัวอักษรตั้งแต่ต้น?
function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
} else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(), rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
return rc.text.length;
}
return 0;
}
จากนั้นแทนที่ค่า textarea เมื่อShift+ Enterร่วมกันส่งแบบฟอร์มหากEnterกดเพียงอย่างเดียว
$('textarea').keyup(function (event) {
if (event.keyCode == 13) {
var content = this.value;
var caret = getCaret(this);
if(event.shiftKey){
this.value = content.substring(0, caret - 1) + "\n" + content.substring(caret, content.length);
event.stopPropagation();
} else {
this.value = content.substring(0, caret - 1) + content.substring(caret, content.length);
$('form').submit();
}
}
});
นี่คือตัวอย่าง