2012-09-28 51 views
1

在我的純HTML頁面中,我有一個用戶輸入關鍵字,然後重定向到asp頁面的文本框。 當用戶點擊提交按鈕時,我使用javascript捕獲關鍵字。如何在html中捕獲輸入密鑰並重定向到asp頁面?

但是當用戶按回車時,HTML頁面將重新加載並返回錯誤頁面。 我如何捕捉輸入關鍵事件?這樣它會重定向到asp頁面。 感謝

我的javascript代碼如下:

function searching() {    
      var keywordsStr = document.getElementById('keywords').value; 
      var cmd = "http://xxx/SearchEngine/Searching.aspx?keywords=" + encodeURI(keywordsStr) ; 
      window.open(cmd); 
     } 

我的HTML代碼如下:

<form name="form1" method="post" action="" > 
    <input name="keywords" type="text" id="keywords" size="50" > 
    <input type="submit" name="btn_search" id="btn_search" value="Search" onClick="javascript:searching(); return false;"> 
    <input type="reset" name="btn_reset" id="btn_reset" value="Reset"> 
    </form> 
+0

我創建[A JSFiddle.net(http://jsfiddle.net/bfuxx/)根據您的*精確*代碼,它的工作原理沒有問題(儘管由於替換域名,您將被重定向到pron站點)。你確定'searching()'可以作爲一個函數嗎?您是否嘗試過使用[Firebug for Firefox](http://getfirebug.com)或IE和Chrome中的開發人員工具(各自爲F5)? – freefaller

回答

0

你的'action'屬性是空的,這意味着HTML頁面會發布到自己(基本上重新加載)。你需要把ASP頁面的URL放在那裏才能發佈數據。

<form name="form1" method="get" action="http://xxx/SearchEngine/Searching.aspx"> 
    <input name="keywords" type="text" size="50" > 
    <input type="submit" name="btn_search" value="Search"> 
    <input type="reset" name="btn_reset" value="Reset"> 
</form> 

並且您可能想要將方法更改爲method="get"以模仿您的javascript函數。 如果你想提交創建一個新的窗口,你可以將目標屬性添加到窗體:

target="_blank" 
2

如果你打開使用jquery

你可以這樣做,

$("#keywords").keyup(function(e){ 
    if(e.keyCode == '13') 
    { 
     //enter key 
    } 
}); 
0

你爲什麼不直接在新窗口中打開表單的結果?
我更喜歡使用後:

<form action="http://xxx/SearchEngine/Searching.aspx" method="post" target="_blank"> 

但你可以使用get調用,爲你在你的代碼片段做

<form action="http://xxx/SearchEngine/Searching.aspx" method="get" target="_blank"> 



如果你真的要檢測的輸入關鍵..在你的情況下,我會建議你在整個頁面上使用onkeydown事件,以防止觸發與輸入密鑰相關的事件(例如提交表單),方法是使用:

document.onkeydown = checkKeycode 
function checkKeycode(e) 
{ 
    var keycode; 
    if (window.event) keycode = window.event.keyCode; 
    else if (e) keycode = e.which; 
    // alert("keycode: " + keycode); 
    if (keycode == 13) 
    { 
     alert('enter key is pressed: now do something'); 
    } 
} 
+0

非常感謝... –

相關問題