Babajide Ajibade
Babajide Ajibade

Reputation: 1

Onkeypress enter event not firing

My onkeypress event is not working on the search bar on my website. Here's my javascript and html code:

window.onload = function() {
    document.getElementById("SearchText").value = getParameterByName("s");

    var a = document.getElementById("SearchLink");

    a.onclick = function() {
        search();
    }
}

function search() {
    var searchResultsUrl = "/search/";
    document.location.href = searchResultsUrl + "?s=" +
    document.getElementById("SearchText").value;
    return false;
}

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)')
        .exec(window.location.search);

    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

And here's the html code:

<input type="text" id="SearchText" onkeypress="if(SearchText.keyCode==13)search()" />

Upvotes: 0

Views: 2250

Answers (2)

Just Jake
Just Jake

Reputation: 4848

The SearchText variable in your onkeypress scriptlet will be undefined. I suggest defining your event handler in Javascript, like so:

SearchTextbox = document.getElementById("SearchText");
SearchTextbox.onkeypress = function(evt) {
    if (evt.keyCode === 13) {
        // Handle key press event here
    }
}

For your reference:

KeyboardEvent: https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent

element.onkeypress: https://developer.mozilla.org/en-US/docs/DOM/element.onkeypress

Edit: changed event param name as suggested.

Upvotes: 0

jbabey
jbabey

Reputation: 46647

A text box does not have a keyCode property - that is a property of an event object. Try this instead.

HTML:

<input type="text" id="SearchText" />

JS:

window.onload = function() {
    var textbox = document.getElementById("SearchText");
    textbox.value = getParameterByName("s");

    ... snip ...

    textbox.onkeypress = function (e) {
        if (e.keyCode === 13) {
            search();
        }
    };
}

... snip ...

A fixed fiddle.

Upvotes: 4

Related Questions