0

私は現在、自分のためだけに最初のWebサイトを作成しようとしています。デフォルトで非表示になっているメニューがあります。ナビゲーションバーのボタンを押すと、正常に開きます。

しかし、キーを介してこれを行う可能性も追加したいと思います。M=メニューを開く; ESC=メニューを閉じる;

$(document).keydown(function(e) {
   if (e.keyCode == 77) {$('#Menu').collapse('show') ;}  ;
   if (e.keyCode == 27) {$('#Menu').collapse('hide') ;}  ;
}) ;

これは問題なく機能しますが、問題は、ESCを押さずにMキーを2回以上続けて押すと、メニューが再び開かないことです。ESCキーと同じです。
さらに、メニューがすでに開いているときにMを押すと、メニューが再び開きますが、これは見苦しいです。

そこで、MenuToggledという変数にメニューの状態を保存しようとしました。
なぜこれが機能しないのですか?

$(document).ready(function() {
    //different stuff...
    var MenuToggled = 0 ;
} ;

$(document).keydown(function(e) {

     if (e.keyCode == 77) {

        if (MenuToggled == 0) {$('#Menu').collapse('show') ; var MenuToggled = 1 ;} 
     } ;   

     if (e.keyCode == 27) {
        if (MenuToggled == 1) {$('#Menu').collapse('hide') ; var MenuToggled = 0 ;} 
     } ;   

}); 

.alert('test')を起動しようとしたため、Jqueryはキーコードを入力しないようです-if's; イベントであり、「2番目の」コードでは機能しませんでした。

4

2 に答える 2

1
var menuToggled = false;
$(document).keydown(function(e){
    var action = false;

    switch(e.which){
        case 77:
            if(!menuToggled) action = 'show';
        break;

        case 27:
            if(menuToggled) action = 'hide';
        break;
    };

    if(action !== false){
        $('#Menu').collapse(action);
        menuToggled = !menuToggled;
        e.preventDefault();
    }
});
于 2013-03-25T10:57:26.490 に答える
0

このステートメントを使用してください.. e.preventDefault()

if (e.keyCode == 77) {
        e.preventDefault();
        if (MenuToggled == 0) {$('#Menu').collapse('show') ; var MenuToggled = 1 ;} 
     } ;   

     if (e.keyCode == 27) {
         e.preventDefault();
        if (MenuToggled == 1) {$('#Menu').collapse('hide') ; var MenuToggled = 0 ;} 
     } ;  
于 2013-03-25T10:41:58.487 に答える