使用回车键搜索关键字 - BUG

时间:2017-06-07 16:12:47

标签: javascript .net

所以,我正在我的网站上开发一个搜索功能,我想将用户重定向到一个包含他想要搜索的关键字的页面。

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

此代码位于我的母版页(.net 4.0)中,它是我所有webforms(包括home)的父代。任何人都可以帮助我吗?



<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>
&#13;
&#13;
&#13;

1 个答案:

答案 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>

并将脚本更改为:

 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));
 }

我宁愿把搜索代码放在搜索按钮本身之外,只有将它放在你的html元素之外才有意义