4

我在通过 Enter 键访问时执行的页面重定向功能存在问题。基本上, onkeypress=Enter 或单击搜索时,页面应重定向到预设 url 并将搜索字符串附加到查询中。

如果我手动单击“搜索”,则重定向有效,但是,如果我只是按 Enter 键,则不会。我添加了一个警报以确保搜索功能正在触发,但 document.location.href 没有重定向页面。在 FF4 中,它刷新页面(但保留搜索字符串)。在 IE7 中,它关闭窗口。

[编辑] 我在 Sharepoint 网站上使用它似乎是相关的。该代码在 Sharepoint 之外运行良好。[/编辑]

下面的示例简化了我已经实现的内容,但重新创建了问题。

<script type="text/javascript">
function mySearch() {
    var SearchString = document.getElementById("SearchBox").value;
    var url = "http://stackoverflow.com/search?q="+SearchString;
    alert(SearchString);
    document.location.href = url;
}
</script>
<input id="SearchBox" onkeypress="if (event.keyCode == 13) mySearch();"/>&nbsp;
<a id="SearchButton" href="javascript:mySearch();" />Search</a>

有人可以帮忙吗?

4

9 回答 9

1

尝试:

window.location = url; // instead of: document.location.href = url;

你的注册代码似乎在这里工作:http: //jsfiddle.net/maniator/RzhXy/

于 2011-04-27T15:32:16.110 回答
1

您可以更换:

document.location.href = url;

和:

window.document.aspnetForm.action = url;

这在 SharePoint 2010 网站中对我有用

于 2011-10-13T21:42:18.427 回答
1

我对 XPages (IBM) 也有同样的问题。我认为这些框架有一些共同点。我所做的是在触发 window.location.href 之前对事件使用 preventDefault() 函数。

如果(thisEvent.keyCode == 13){
    thisEvent.preventDefault();
    window.location.href = "newpage.html";
}

我无法解释它为什么起作用;我刚试了一个瞧!我希望它对将来的人有所帮助。(现在我可以收回赏金了嘿嘿)

于 2012-02-05T14:51:38.153 回答
0

摆脱 .href。只需设置 set document.location 即可更改 URL。您当前的版本应该可以工作...

document.location = url;
于 2011-04-27T15:33:40.357 回答
0

确保您绝对没有其他操作作为对 onkeyup 事件的响应,在我的情况下,window.onkeyup 正在调用其他一些元素 onclick 处理程序,一切都搞砸了。

于 2011-07-22T11:57:49.140 回答
0

手动点击有效吗?然后你可以有一个快速修复的解决方案!if (event.keyCode == 13) document.getElementById('SearchButton').click();

如果它不起作用,请尝试 .onclick() 。

于 2012-02-12T13:21:00.803 回答
0

在 SharePoint 2010 CWEP 中测试了原始代码,它似乎在 IE7 中工作,在 SharePoint 2007 CEWP 中测试,它在 IE9 和 FF4 中工作

在黑暗中刺伤,但您可以尝试删除具有错误返回值的单个函数调用的内联代码。我以前在 SharePoint 中遇到过类似的问题。

<script type="text/javascript">
function myKeypress(){
   if (event.keyCode == 13) 
     mySearch();
   return false;
}

function mySearch() {
    var SearchString = document.getElementById("SearchBox").value;
    var url = "http://stackoverflow.com/search?q="+SearchString;
    alert(SearchString);
    document.location.href = url;
}
</script>
<input id="SearchBox" onkeypress="myKeypress();"/>
<a id="SearchButton" href="javascript:mySearch();">Search</a> 
于 2011-05-06T08:49:42.533 回答
0

试试这个

<script type="text/javascript">
    function mySearch()
    {
        if(event.keyCode==13)
        {
            var SearchString = document.getElementById("SearchBox").value;
            var url = "http://stackoverflow.com/search?q="+SearchString;
            alert(SearchString);
            document.location.href = url;
        }
    }
</script>
<input id="SearchBox" onkeypress="mySearch();"/>&nbsp;
<a id="SearchButton" href="javascript:mySearch();" />Search</a>

顺便说一句,你的旧功能在我的 ALL 浏览器上运行良好

于 2011-04-27T15:44:38.343 回答
0

添加 return false 以阻止 asp.net 表单继续处理

<script type="text/javascript">
function mySearch() {
    var SearchString = document.getElementById("SearchBox").value;
    var url = "http://stackoverflow.com/search?q="+SearchString;
    alert(SearchString);
    document.location.href = url;
    //add return false to stop asp.net form from continuing to process
    return false;
}
</script>
<input id="SearchBox" onkeypress="if (event.keyCode == 13) mySearch();"/>&nbsp;
<a id="SearchButton" href="javascript:mySearch();" />Search</a>
于 2015-09-03T01:13:04.197 回答