【问题标题】:Search keywords with enter key - BUG使用回车键搜索关键字 - BUG
【发布时间】:2017-06-07 16:12:47
【问题描述】:

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

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

此代码位于我的母版页 (.net 4.0) 中,它是我所有网络表单(包括主页)的父级。谁能帮帮我?

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

【问题讨论】:

  • 你有没有其他被称为 runScript 的脚本?
  • 否...此脚本仅用于此处...
  • 并且没有其他同名脚本
  • 如果其他页面出现错误,您是否检查了调试器?例如,无法获取 undefined 的值(以防你的TBPesquisa 找不到?)
  • 当我这样做时: 我在我的主页和其他页面中得到 [Object Object] 但是......在 chrome 控制台中出现以下错误“加载资源失败:服务器响应状态为 404(未找到): 21741/未定义?1496853103683"

标签: javascript .net


【解决方案1】:

可能原因是没有找到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 元素之外才有意义

【讨论】:

  • 非常感谢您的帮助!我会这样做! :)
猜你喜欢
  • 1970-01-01
  • 2018-12-04
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多