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

XPages (IBM) でも同じ問題がありました。これらのフレームワークには共通の問題があると思います。私がしたことは、window.location.href をトリガーする前に、イベントで preventDefault() 関数を使用することです。

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

なぜそれが機能するのか説明できません。出来上がりを試してみました!将来誰かに役立つことを願っています。(これで懸賞金撤回できます笑)

于 2012-02-05T14:51:38.153 に答える
1

試す:

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

そして、あなたのregコードはここで機能しているようです:http://jsfiddle.net/maniator/RzhXy/

于 2011-04-27T15:32:16.110 に答える
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>

ところで、古い関数は私のすべてのブラウザで正常に機能しています

于 2011-04-27T15:44:38.343 に答える
0

onkeyup イベントへの応答として絶対に他のアクションがないことを確認してください。私の場合、window.onkeyup は他の要素の onclick ハンドラーを呼び出していて、すべてが台無しになりました。

于 2011-07-22T11:57:49.140 に答える
0

.href を取り除きます。set document.location を設定して URL を変更するだけです。ただし、現在のバージョンは動作するはずです...

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

Tested the original code in SharePoint 2010 CWEP and it appears to work in IE7, tested in a SharePoint 2007 CEWP and it works in IE9 and FF4

Stab in the dark but you can try removing the inline code for a single function call that has a false return value. I have had problems like that before in 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

手動クリックは機能しますか? その後、迅速な解決策を得ることができます! If (event.keyCode == 13) document.getElementById('SearchButton').click();

うまくいかない場合は、.onclick() も試してください。

于 2012-02-12T13:21:00.803 に答える