7

I'd like to either simply swallow an Enter key press in <input> fields or else instead substitute Tab key presses. I haven't yet decided which is best.

How can I do this in jQuery? I've got this so far:

$(document).ready(function(){
    ...
    //handle enter key
    $("input").keypress(function (e) {
        var k = e.keyCode || e.which;
        if (k == 13) {
            //???
        }
    });
});

(That e.keyCode || e.which part was recommended in this question.)

What might I put there to either (a) cancel the event or else to (b) force a Tab key press?

Community
  • 1
  • 1
Zack Peterson
  • 54,659
  • 78
  • 206
  • 280

3 Answers3

14

With e.preventDefault() you can prevent the default action, which in this case is submiting the form.

Ikke
  • 95,379
  • 23
  • 93
  • 119
8

Or return false;:

$(document).ready(function(){
  ...
  //handle enter key
  $("input").keypress(function (e) {
      var k = e.keyCode || e.which;
      if (k == 13) {
          return false; // !!!
      }
  });
});
Mark Ursino
  • 30,729
  • 10
  • 49
  • 83
2

Also, if you'd like to just mimic a tab to the next control, as you mentioned, you could try this method by jdsharp.

$(document).ready(function(){
...
//handle enter key
$("input").keypress(function (e) {
    var k = e.keyCode || e.which;
        if (k == 13) {
            $(this).focusNextInputField();
        }
    });
});
Chad
  • 1,460
  • 2
  • 19
  • 46
Ben Lesh
  • 106,634
  • 47
  • 244
  • 231