window.location无法按预期工作

时间:2011-10-20 21:15:07

标签: javascript html

我有一个asp.net网页表单,顶部有一个html输入和按钮,我需要将其用作搜索框。我需要将页面的模板与用PHP编写的页面集成在一起,所以我试图将搜索框代码编写为与asp.net和php兼容,因为我可以。

话虽如此,我不希望按钮成为提交按钮,因为我不希望它干扰下面页面上出现的任何可能必须自己提交按钮的按钮。

当我点击Go按钮时,一切都按预期工作。包括我自己在内的很多用户更喜欢点击输入按钮并假设它会点击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;
}

当我按Enter键时拦截我的重定向到搜索页面是什么?

2 个答案:

答案 0 :(得分:1)

你可以发表整个表格吗?在大多数浏览器中按Enter键进入文本字段时的默认操作是提交表单,因此浏览器在调用JS后提交它,因为您的处理程序不会禁止默认操作。添加返回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的用户!

答案 1 :(得分:0)

您的论坛可能仍在提交中。添加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(); return false;" style="width: 33px; margin-left: 2px;" type="button" value="Go" />

您也可以在onsubmit处理程序中执行此操作,以便通过一次调用来处理它们。