所以,我正在我的网站上开发一个搜索功能,我想将用户重定向到一个包含他想要搜索的关键字的页面。
以下代码有效,但有一个错误:当我点击我的主页上的输入时,它有效。用户已成功重定向到我的搜索页面并显示结果。但当我在该页面(或任何其他页面)时,输入键不起作用!只有按钮一直有效!这是一个奇怪的错误,我不知道该怎么做......
此代码位于我的母版页(.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;
答案 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元素之外才有意义