Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery keyup and 'enter' in Safari

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.

like image 517
Martin Avatar asked Oct 03 '10 14:10

Martin


3 Answers

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.

like image 60
meouw Avatar answered Nov 07 '22 22:11

meouw


Try this:

    $('#textSearch').keyup(function (event) {
        var key = event.keyCode || event.which;

        if (key === 13) {
            doSearch();
        }
        return false;
    });
like image 42
Sarfraz Avatar answered Nov 07 '22 21:11

Sarfraz


add prevent deault

$('#textSearch').keyup(function (event) {
    if (event.keyCode == '13') {
        event.preventDefault();
        doSearch();
    }
    return false;
});
like image 1
Praveen Prasad Avatar answered Nov 07 '22 21:11

Praveen Prasad