आसान और सुरुचिपूर्ण समाधान:
सबसे पहले, Enterएक textarea के अंदर दबाने से फॉर्म जमा नहीं होता है जब तक कि आपके पास ऐसा करने के लिए स्क्रिप्ट न हो। यही व्यवहार उपयोगकर्ता को उम्मीद है और मैं इसे बदलने के खिलाफ सिफारिश करूंगा। हालाँकि, यदि आपको ऐसा करना चाहिए, तो सबसे आसान तरीका यह होगा कि आप उस स्क्रिप्ट को खोजें Enterजो फॉर्म जमा कर रही है और उसे बदल दे। कोड कुछ इस तरह होगा
if (evt.keyCode == 13) {
form.submit();
}
... और आप इसे केवल बदल सकते हैं
if (evt.keyCode == 13 && !evt.shiftKey) {
form.submit();
}
दूसरी ओर, यदि आपके पास किसी कारण से इस कोड तक पहुंच नहीं है, तो आपको सभी बड़े ब्राउज़रों में काम करने के लिए निम्नलिखित करने की आवश्यकता है, भले ही कैरेट पाठ के अंत में न हो:
jsFiddle: http://jsfiddle.net/zd3gA/1/
कोड:
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);