javascript - window.location 没有按预期工作

标签 javascript html

我有一个 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/

相关文章:

javascript - CSS 模块将属性作为样式属性传递

javascript - 如何在 cookie 中存储 html 表单元素?

jquery - jQuery removeClass 有问题

html - 简单的命名 anchor 在 FF 中不起作用,但在 IE 中起作用

javascript - 在文本字段中输入时显示预制建议列表

javascript - 下载二进制格式的字节数组

javascript - 在 Highcharts 中传递数据

javascript - Drupal 8 的 Jquery .once() 问题

javascript - 将两个表单合并为一个表单处理程序

php - DOM Scrape 不工作 PHP