16

I have a form with a text area and hitting the enter key submits my form. How can I make it to add a new line character instead of a form submit.

7
  • no iam working with Spring mvc, but this is a simple html form. Commented Dec 24, 2012 at 10:51
  • well buddy shift+enter as default work as what you want Commented Dec 24, 2012 at 10:51
  • i know shift+enter does that but a normal user does not usually know that, i want to disable it and add new line character by using js or jquery. Commented Dec 24, 2012 at 10:53
  • I dont know the answer, but looks like question is restricting submit action, upon enter button hit. Commented Dec 24, 2012 at 10:54
  • 3
    check whether ur html code is wriitten properly Commented Dec 24, 2012 at 10:56

7 Answers 7

32
$('textarea').keypress(function(event) { if (event.which == 13) { event.stopPropagation(); } });​ 

JSFiddle Demo

Sign up to request clarification or add additional context in comments.

3 Comments

well i was thinking to answer it first but i had a confusion about /n or \n ;)
This (the previous version) actually adds a new line to the end of the text – but what if you're typing in the middle of the text? I've edited this accordingly. — One issue is still unfixed about this though, as Jack Cood mentions: adding a new line in the last visible row means you have to adjust the scroll bar. — I'm just super befuddled that this doesn't work out of the box. Such a bug!
Great solution that simply works! However, I would still recommend doing it the vanilla JS way, i.e. element.addEventListener('keypress', event => ...)'
3

Previous answers don't handle splitting the current value of the textarea and simply appends a new line character. The following stops the event from bubbling up to the form and still allows typical textarea behavior on 'enter'.

$('textarea').keydown(function(event) { if (event.keyCode === 13) { event.stopPropagation(); } }); 

Comments

2

you can try this code:

$(document).ready(function() { $("textarea").keydown(function(event){ if(event.keyCode == 13) { event.preventDefault(); return false; } }); }); 

2 Comments

This disables it across the window, which may not be intended. You should scope it to the input box in question.
This disables the enter key and no new line can be added to textarea.
2

This should help

$('#myProblematicForm textarea').keypress(function(event) { if (event.which == 13) { event.preventDefault(); this.value = this.value + "\n"; } }); 

For what it's worth, I'm using Chrome on OS X and Enter inserts a \n in a textarea for me and does not submit forms by default.

3 Comments

ok well, i m also using Google Chrome But On Windows, It does not adds line break as default!
@maček: your solution works, but I got a problem with Chrome. If textarea is scrollable, when I press enter key, the scrollbar doesn't work, I mean it doesn't scroll to new line. Any ideas for this problem?
This adds a new line to textarea but form is still submitted. return false is needed. But with this solution I cannot add a new line anywhere else than in the end of the textarea.
2

This worked for me

$(document).keypress(function(e) { if(e.which == 13) { if(document.activeElement.tagName != "TEXTAREA") { e.preventDefault(); }; } }) 

Comments

2
$(document).ready(function(){ $("#text").keypress(function(event) { if (event.which == 13) { var s = $(this).val(); $(this).val(s+"\n"); //\t for tab } }); }); 

This can be done by jquery code that I have given above. Must notice that the use of ready function is necessary when you write above script before the codes of the HTML input field, and not necessary when you write it after the input field codes.If it not working try to use \t in place of \n it will work.

2 Comments

While this code may answer the question, providing additional context regarding how and/or why it solves the problem would improve the answer's long-term value. Please read this how-to-answer for providing quality answer.
Thanks for the suggestions @thewaywewere , see my edited answer, hope it might help you.
1
$(document).ready(function() { $('textarea').keydown(function(event){ if (event.keyCode == 13) { event.preventDefault(); var s = $(this).val(); $(this).val(s+"\n"); } }); }); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.