我有一个 asp.net web 表单,顶部有一个 html 输入和按钮,我需要将其用作搜索框。我需要将页面模板与用 php 编写的页面集成在一起,因此我尝试编写与 asp.net 和 php 兼容的搜索框代码。
话虽如此,我不希望该按钮成为提交按钮,因为我不希望它干扰出现在其下方页面上的任何按钮,这些按钮本身可能必须是提交按钮。
当我单击“开始”按钮时,一切都按预期进行。许多用户,包括我自己,更喜欢直接点击回车按钮并假设它会点击 Go 按钮。由于它不是提交按钮,因此无法执行此操作,但是当我在文本框中按回车键时,即使在 onkeydown 中使用代码来运行搜索/重定向功能,它所做的只是刷新页面。
搜索框/按钮:
<input onkeydown="if (event.keyCode == 13) doSearch() " id="search" type="text" name="search" value="Search" style="width: 116px;" /><input id="btSearch" onclick="doSearch();" style="width: 33px; margin-left: 2px;" type="button" value="Go" />
搜索功能:
function doSearch() {
var query = document.getElementById("search").value;
window.location = "/Search.aspx?" + query;
}
当我按下回车键时,什么拦截了我到搜索页面的重定向?
最佳答案
你能把整个表格贴出来吗?在大多数浏览器中,当您在文本字段中按回车键时的默认操作是提交表单,因此您的浏览器在调用 JS 后提交它,因为您的处理程序没有抑制默认操作。为此添加一个 return false:
<input onkeydown="if (event.keyCode == 13) {doSearch(); return false; }" id="search" type="text" name="search" value="Search" style="width: 116px;" /><input id="btSearch" onclick="doSearch();" style="width: 33px; margin-left: 2px;" type="button" value="Go" />
或者,只需将正确的 ACTION
值放入 form
标记中 - 否则该表单将无法为没有 JavaScript 的用户工作!
关于javascript - window.location 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7842343/