jQuery keyup and 'enter' in Safari

Martin picture Martin · Oct 3, 2010 · Viewed 21.4k times · Source

I am using jQuery and want to make it possible for the user to hit enter after entering data into a search field to start the search.

I'm using the following code:

        $('#textSearch').keyup(function (event) {
            if (event.keyCode == '13') {
                doSearch();
            }
            return false;
        });

It works perfect in Firefox and IE but not at all in Safari. What happens is that the form is being submitted when I hit enter in safari and that is not what I want.

Adding onsubmit="return false;" to the form works but is not an option as the form tag is on a masterpage of an asp.net page and I need the form to be submitted on other pages.

Is there a way to also get this feature working in Safari?

EDIT: I also tried to just show an alert instead of the doSearch() function. The alert shows up fine but after that the form is being submitted.

Answer

meouw picture meouw · Oct 3, 2010

Browsers may vary as to which event triggers a submit. In this case Safari may be submitting on the keydown event.
You could watch for the submit event without changing the markup and cancel it:

$('#the-id-of-the-form').submit( function( e ) {
    e.preventDefault();
});

You can then listen for the keyup event and handle it as you are doing now.