Reputation: 1
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
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
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 ...
Upvotes: 4