0

document.onkeyupを使用してナビゲーションシステムを作成しようとしています。キーボードの左矢印を押すと、ユーザーは前のIDに転送され、右矢印を押すと次のIDに転送されます。

また、Rキーを使用してランダムなIDを表示したいのですが、検索とログインのフォームもあるので、ユーザーが入力中にRを押すと、別のページに転送されます。

どうすればこれを回避できますか?

これが私のコードです

$AddToSite_JavaScript = '<script>
document.onkeyup=checkKeycode;
function checkKeycode(e)
{
    var keycode;
    if(window.event) keycode=window.event.keyCode;
    else if(e) keycode=e.which;

    if(keycode=="37") window.location.href=\''. $WebsiteRoot ."/". $PreviousId ."-". $PreviousTitle .'\';
    else if(keycode=="39") window.location.href=\''. $WebsiteRoot ."/". $NextId ."-". $NextTitle .'\';
    else if(keycode=="13" || keycode=="82") window.location.href=\''. $WebsiteRoot ."/random" .'\';
}
</script>';
4

2 に答える 2

1

コードのこの部分:

> var keycode;
> if(window.event) keycode=window.event.keyCode;
> else if(e) keycode=e.which;

次のようになります:

var keycode, target;
e = e || window.event;
if (e) {
  keycode = e.keyCode || e.which
  target = e.target || e.srcElement;
}

これevent.srcElementはIE固有であり、W3C準拠のブラウザはをサポートしていることに注意してくださいevent.target

targetこれが、ハンドラーが関数を呼び出した要素であるため、後で実行できます。

... && target.tagName.toLowerCase() != 'input' ...
于 2012-09-08T02:16:00.397 に答える
0

テキストの入力のみを使用している場合:後に次のコードをスローするkeycode=="82"と、トリックが実行されます。

&& e.srcElement.tagName != "INPUT"

基本的に、キーストロークが入力ボックスから発生したかどうかをチェックするだけです。

入力でEnterキーを押してトリガーしたくない場合は、既存のコードを()に入れてから、これを追加します。

于 2012-09-08T02:06:31.693 に答える