document.location.href没有在sharepoint中更新onkeypress

时间:2011-04-27 15:30:34

标签: javascript sharepoint href keycode enter

我在使用回车键访问时执行页面重定向功能时遇到问题。基本上,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();"/>&nbsp;
<a id="SearchButton" href="javascript:mySearch();" />Search</a>

有人可以帮忙吗?

9 个答案:

答案 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();"/>&nbsp;
<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();"/>&nbsp;
<a id="SearchButton" href="javascript:mySearch();" />Search</a>