2017-06-07 217 views
0

因此,我正在开发我的网站的搜索功能,并且我想将用户重定向到他正试图搜索的关键字的页面。用输入键搜索关键字 - BUG

下面的代码工作,但有一个错误:当我点击输入在我的主页它的作品。用户被成功重定向到我的搜索页面并显示结果。但是当我在该页面(或任何其他页面)时,回车键不起作用!只有按钮一直工作!这是一个奇怪的错误,我不知道该怎么办...

此代码是在我的母版(.net 4.0),它是我所有的webforms(包括家庭)的父母。谁能帮我?

<asp:TextBox ID="TBPesquisa" runat="server" placeholder="Pesquise produtos aqui" onkeypress="return runScript(event)"></asp:TextBox> 
 

 
<button id="BTPesquisa" class="button-search" type="button" onClick="javascript:window.location.assign('/Pesquisa?val='+encodeURIComponent(document.getElementById('TBPesquisa').value));">Pesquisar</button> 
 
           
 
<script> 
 
    function runScript(e) { 
 
    if (e.keyCode == 13) { 
 
     $("#BTPesquisa").click(); 
 
    } 
 
    } 
 
</script>

+0

之外,你有任何机会,其他脚本被称为runScript? – Icepickle

+0

否...此脚本仅用于此处... –

+0

而且没有其他具有相同名称的脚本 –

回答

0

也许,原因是TBPesquia场不存在,因为这是一个asp.net文本框控件,而ID可能不是你希望它是什么。

现在你既可以去设置ClientID属性,如:

<asp:TextBox ID="TBPesquisa" ClientID="TBPesquisa" runat="server" placeholder="Pesquise produtos aqui" onkeypress="return runScript(event)"></asp:TextBox> 

,或者你可以稍微重写你的处理程序,通过执行以下操作

<asp:TextBox ID="TBPesquisa" runat="server" placeholder="Pesquise produtos aqui" onkeypress="runScript(event)"></asp:TextBox> 

,改变的runScript到:

function runScript(e) { 
    var source = e.target; 
    if (e.keyCode === 13) { 
    searchFor(source.value); 
    e.preventDefault(); 
    } 
} 

function searchFor(textValue) { 
    window.location.assign('/Pesquisa?val=' + encodeURIComponent(textValue)); 
} 

我会顺便说一句,而不是把代码搜索外o f搜索按钮本身,只有在你的HTML元素

+0

非常感谢您的帮助!我会这样做的! :) –