document.location.href не обновляет onkeypress в sharepoint - PullRequest
4 голосов
/ 27 апреля 2011

У меня проблема с функцией перенаправления страницы, выполняемой при доступе с помощью клавиши ввода.По сути, onkeypress = Enter или при нажатии кнопки «Поиск» страница должна перенаправить на заданный URL-адрес и добавить строку запроса к запросу.

Перенаправление работает, если я вручную нажимаю «Поиск», однако, если я просто нажимаю EnterЭто не.Я добавил предупреждение, чтобы убедиться, что функция поиска срабатывает, но это так, но document.location.href не перенаправляет страницу.В FF4 он обновляет страницу (но сохраняет строку поиска).В IE7 он закрывает окно.

[ edit ] Кажется уместным, что я использую это на сайте Sharepoint.Код отлично работает вне Sharepoint.[/ edit ]

Пример ниже упрощает то, что я реализовал, но воссоздает проблему.

<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 ]

1 голос
/ 14 октября 2011

Вы можете заменить:

document.location.href = url;

на:

window.document.aspnetForm.action = url;

Это сработало для меня на сайтах SharePoint 2010

1 голос
/ 05 февраля 2012

У меня была такая же проблема с XPages (IBM).Я думаю, что у этих структур есть некоторая общая проблема.Что я сделал, так это использовал функцию warnDefault () для события перед запуском window.location.href.

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

Я не могу объяснить, почему это работает;Я только что попробовал вуаля!Я надеюсь, что это поможет кому-то в будущем.(Теперь я могу отозвать награду хехехе)

1 голос
/ 27 апреля 2011

try:

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

и ваш регистрационный код работает здесь: http://jsfiddle.net/maniator/RzhXy/

0 голосов
/ 03 сентября 2015

добавить возврат 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>
0 голосов
/ 12 февраля 2012

Ручной клик работает?Тогда вы можете быстро найти решение проблемы!If (event.keyCode == 13) document.getElementById ('SearchButton'). Click ();

Если это не работает, попробуйте также .onclick ().

0 голосов
/ 22 июля 2011

Убедитесь, что у вас совершенно нет других действий в ответ на событие onkeyup, в моем случае window.onkeyup вызывал некоторые другие элементы обработчика onclick, и все испортилось.

0 голосов
/ 06 мая 2011

Протестировал исходный код в SharePoint 2010 CWEP, и он, кажется, работает в IE7, протестировано в CEWP SharePoint 2007 и работает в 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> 
0 голосов
/ 27 апреля 2011

просто попробуйте это

<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>

Кстати, старая функция работает нормально на моем ВСЕХ браузерах

0 голосов
/ 27 апреля 2011

Избавьтесь от .href.Просто установите set document.location для изменения URL.Ваша текущая версия должна работать, хотя ...

document.location = url;
...