2013-04-29 30 views
0

我有以下的jQuery的片斷Jquery的window.location的不是重定向,但清爽的頁面

// General search 
$j(".search").each(function() { 
    var baseURL = "/search.aspx?c=Entire%20Site&q="; 
    var searchBox = $j(this); 
    searchBox.find("input").keypress(function (e) { 
     if (e.keyCode == 13) { 
      submitSearchValueFromTextBox(searchBox, baseURL); 
     } 
    }); 
}); 



submitSearchValueFromTextBox = function(searchBox, baseURL) { 
     window.location.href = baseURL + escape(searchBox.find("input").val()); 
    }; 

HTML輸入

<span class="searchBox"> 
       <span> 
       <input type="text" name="searchBoxHeader" id="searchBoxHeader" value="<%= SearchLabel %>" /> 
       </span> 
      </span> 
      <span class="searchBtn"> 
       <a href="#" class="btnSearchTop"> 
       <img src="/images/search_btn.gif" name="submitHeader" id="submitHeader"/> 
       </a> 
      </span> 

當用戶點擊回車鍵把用戶我所測試的是到我的搜索頁面,我發現代碼能夠正常工作,因爲它找到了正確的keyCode,並且在獲取重定向函數時只刷新頁面而不是去轉到頁面。

任何想法?

編輯它正常工作與它的onclick回車鍵行程是行不通

searchBox.find("a").click(function() { 
     submitSearchValueFromTextBox(searchBox, baseURL); 
    }); 
+0

'alert(e.keyCode);'並且看到當你按回車時你得到的值。並檢查你的控制檯的錯誤! – musefan 2013-04-29 16:29:09

+0

E.keycode是正確的,沒有控制檯錯誤 – StevieB 2013-04-29 16:33:22

+0

嗯...試試$('。searchBox')而不是$('。search')?也許這只是一個錯字 – 2013-04-29 16:41:55

回答

0

如果搜索框存在於<form>標籤內,則按Enter鍵將提交表單。您需要阻止提交表單。

+0

嘿,所以是它的內部形式。我怎樣才能防止它提交? – StevieB 2013-04-29 16:38:16

+0

oh ye e.preventDefault();做的伎倆,謝謝! – StevieB 2013-04-29 16:45:30

0

如果我讀正確的代碼,你的定義基本URL需要或者是按鍵()內部匿名函數,或它需要是全球性的。您目前在each()匿名函數內但在keypress()之外,它只針對each()中的匿名函數的baseURL範圍,因此無法通過keypress()中的匿名函數訪問。

+0

我甚至嘗試過,如果(e.keyCode == 13){window.location.href =「www.google.com」; }但仍然只是刷新主頁 – StevieB 2013-04-29 16:33:48

+0

keypress事件處理程序應該能夠「查看」在父閉包中定義的變量。 – 2013-04-29 16:36:17

相關問題