我在使用回车键访问时执行页面重定向功能时遇到问题。基本上,onkeypress = Enter或单击搜索时,页面应重定向到预设URL并将搜索字符串附加到查询。
如果我手动点击“搜索”,重定向会起作用,但是,如果我只是点击输入则不然。我添加了一个警报以确保搜索功能正在触发,但是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();"/>
<a id="SearchButton" href="javascript:mySearch();" />Search</a>
有人可以帮忙吗?
答案 0 :(得分:1)
尝试:
window.location = url; // instead of: document.location.href = url;
您的注册码似乎在这里工作:http://jsfiddle.net/maniator/RzhXy/
答案 1 :(得分:1)
您可以替换:
document.location.href = url;
使用:
window.document.aspnetForm.action = url;
这在SharePoint 2010网站中对我有用
答案 2 :(得分:1)
我遇到了与XPages(IBM)相同的问题。我认为这些框架有一些共同的问题。我所做的是在触发window.location.href之前对事件使用preventDefault()函数。
if(thisEvent.keyCode == 13){ thisEvent.preventDefault(); window.location.href = "newpage.html"; }
我无法解释它为何起作用;我刚试了一个瞧!我希望它能帮助将来的某个人。 (现在我可以收回赏金呵呵呵呵)
答案 3 :(得分:0)
摆脱.href。只需设置set document.location即可更改URL。您当前的版本应该工作...
document.location = url;
答案 4 :(得分: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();"/>
<a id="SearchButton" href="javascript:mySearch();" />Search</a>
顺便说一下,你的旧功能在我的ALL浏览器上正常工作
答案 5 :(得分: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>
答案 6 :(得分:0)
确保你绝对没有其他动作作为对onkeyup事件的响应,在我的情况下,window.onkeyup正在调用其他一些元素onclick处理程序,一切都搞砸了。
答案 7 :(得分:0)
手动点击有效吗?然后你就可以有一个快速解决方案! if(event.keyCode == 13)document.getElementById('SearchButton')。click();
如果不起作用,请尝试.onclick()。
答案 8 :(得分: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();"/>
<a id="SearchButton" href="javascript:mySearch();" />Search</a>