2017-09-13 120 views
-1

我已經實現了檢測「window logo key」+「向上箭頭」鍵事件的組合鍵的代碼。當用戶在文本框內單擊並按住「Win +向上箭頭」時,我會顯示警告消息。它手動工作正常。但我試圖在頁面加載時觸發它,它不工作。Keyup Event在頁面加載時不觸發

$(document).ready(function() { 
 

 
    var e = jQuery.Event('keyup'); 
 
    e.metaKey = true; 
 
    e.which = 38; //up arrow 
 

 
    // Not working 
 
    $("#test").trigger(e); 
 

 
    // or 
 

 
    // Not working 
 
    $("#test").keyup(); 
 

 

 
    $("#test").keyup(function(e) { 
 

 
    if (e.which == 38 && e.metaKey == true) { 
 
     alert('win + Up arrow pressed'); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="test" type="text" />

+0

你爲什麼要打電話keyup事件明確這樣'//不工作 $(「#測試」)觸發( E); 或 //不工作 $(「#test」)。keyup();'? –

+0

您需要將事件處理程序移到觸發器上方。當你調用'$(「#test」)。keyup();'沒有設置事件處理程序。 – George

+0

嗯,我不能理解你的問題,結帳這個jsbin鏈接其工作正常後,我剛剛從您的代碼中刪除兩行 http://jsbin.com/bolaqimaxa/edit?html,js,output –

回答

0

您是否嘗試過這種方式? 你應該在調用觸發器之前聲明你的事件處理程序。

$("#test").on("keyup", function (e){ 
    if(e.which == 38 && e.metaKey == true) 
    { 
     alert('win + Up arrow pressed'); 
    } 
}); 
$("#test").trigger("keyup"); 
+0

在回答時,歡迎解釋。 –

+0

我也試過你的代碼,它的工作。但爲什麼窗戶不能最大化?也許我沒有在我的問題中提到過。對此,承認 –

+0

是的,你沒有提到它。我不確定你可以全屏最大化瀏覽器窗口,但是你可以通過javascript將它調整到screen.width和screen.height。 類似於: function maximize(){ window.moveTo(0,0); window.resizeTo(screen.width,screen.height); } – proti

0

這是因爲您已聲明調用keyup後您的事件處理程序。

因此,爲了使你的代碼的工作,你必須把它IKE寫:

$(document).ready(function() { 

    $("#test").keyup(function (e){ 
     if(e.which == 38 && e.metaKey == true) { 
      alert('win + Up arrow pressed'); 
     } 
    }); 

    $("#test").keyup(); 

}); 
+0

我試過你的代碼,它的工作。但爲什麼窗戶不能最大化?也許我沒有在我的問題中提到。 –

+0

您的代碼中沒有任何內容與最大化窗口有關。 –

+0

一般窗口標誌鍵+向上箭頭將最大化窗口。我想如果我檢測到組合鍵(窗口標誌鍵+向上箭頭),自動窗口將最大化,如果我錯了。請告訴我我該怎麼做。 –