2013-04-29 66 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

相关问题