2012-10-08 84 views
0

我的onkeypress事件不適用於我網站上的搜索欄。這裏是我的JavaScript和HTML代碼:Onkeypress enter event not firing

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, ' ')); 
} 

而這裏的html代碼:

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

問題是什麼? –

+0

jsfiddle問題:http://jsfiddle.net/mgvPs/ – Undefined

回答

4

一個文本框不具有keyCode財產 - 這是一個事件對象的屬性。試試這個。

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.

+0

我試過了,它仍然沒有工作 –

0

在onkeypress事件的scriptlet的SearchText變量將是不確定的。我建議在定義事件處理在Javascript中,像這樣:

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

供您參考:

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

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

編輯:改變event PARAM名建議。

+1

你通常想命名事件參數而不是'event',因爲這會隱藏'window.event'全局變量IE使用。 – jbabey