2009-11-23 74 views
0

我有一個文本框,每當用戶按下一個鍵時,它會被檢查以查看用戶是否按下輸入。如果按下回車鍵,我想在文本框中添加所有信息並將用戶轉移到其他網址。Javascript問題與位置.href

<script language="javascript" type="text/javascript"> 
    function checkEnter(e){ //e is event object passed from function invocation 
     var characterCode; 

     if(e && e.which){ //if which property of event object is supported (NN4) 
      e = e; 
      characterCode = e.which; //character code is contained in NN4's which property 
     } 
     else{ 
      e = event; 
      characterCode = e.keyCode; //character code is contained in IE's keyCode property 
     } 

     if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key) 
      var searchLink = '/Search/?Keywords=' + document.getElementById('<%= searchBox.ClientID %>').value; 

      transferUser(searchLink);   
      return false; 
     } 
     else{ 
      return true; 
     } 
    } 

    function transferUser(url) { 
     window.location.href = url; 
     window.location.replace(url); 
    } 
    </script> 

Search: <input name="ctl00$searchBox" type="text" id="ctl00_searchBox" class="header_line_search_box_textbox" onKeyPress="checkEnter(event);" /> 

我試過了所有可能的組合,但沒有任何反應。該網站只是刷新自己。

我還需要以某種方式將文本從用戶轉換爲HTML安全,必須喜歡ASPX的HttpUtility.EncodeUrl。

+0

會,onkeypress事件= 「JavaScript的:checkEnter(事件);」做出改變? – 2009-11-23 19:33:12

+0

你可以提醒(searchLink)並查看它是否有任何奇怪的字符? – 2009-11-23 19:38:06

+1

您應該避免在HTML標籤中使用JavaScript屬性。相反,您應該以編程方式將even連接到節點。 – 2009-11-23 20:08:57

回答

3

我米不知道你需要所有這一切。以下HTML標記正常,內置行爲不正是你想要的,而不需要任何JavaScript:

<form method="get" action="/Search/"> 
    <input type="text" name="Keywords"> 
</form> 

但是,你的UI有某種方式來提交沒有按」的形式是非常重要的t涉及關鍵中風。這是由於兩個原因:

  1. 正如Jorn指出的那樣,可能不太容易看出密鑰提交表單。
  2. 沒有提交按鈕可能會打破使用替代輸入設備的用戶的可用性。

由於上述原因,下面是建議:

<form method="get" action="/Search/"> 
    <input type="text" name="Keywords"> 
    <input type="submit" value="Search or 'go' or whatever"> 
</form> 
+0

使用ASPX,但它的工作原理。謝謝! – Patrick 2009-11-23 21:52:01

2

試試這個,我只是測試這個地方,它的工作原理在我的機器

function transferUser(url) { 
    window.location = url; 
} 

上你會想要改變你如何構建你的URL以下

var searchCriteria = 
    escape(document.getElementById('<%= searchBox.ClientID %>').value); 
var searchLink = '/Search/?Keywords=' + searchCriteria