2011-05-09 90 views
1

我試圖在文件輸入時觸發onkeydown,onkeypress和onkeyup事件(例如,當元素處於焦點並按下某個鍵時事件未被觸發),但它們在Opera中不起作用。點擊()或$('#myFileinput')。trigger('click'))。用jQuery觸發'click'也不起作用(例如$('#myFileinput')。在Opera中的輸入類型文件

有沒有辦法在Opera中觸發這些事件?

這裏是我的代碼:

<input type="file" class="foo" /> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script> 
<script type="text/javascript"> 
    debugger; 
    window.onload = onPageLoad; 
    function onPageLoad() { 

     var input = $(".foo"); 
     debugger; 
     input.keydown(function() { 
      //doesn't work in Opera 
      alert("keydown"); 
     }); 

     input.keypress(function() { 
      //doesn't work in Opera 
      alert("keypress"); 
     }); 

     input.keyup(function() { 
      //doesn't work in Opera 
      alert("keyup"); 
     }) 
    } 

    window.onkeydown = function() { 
     //when the focus is on the input the code bellow doesn't fire 
     alert("window key down") 

    } 

</script> 
+0

你能發表一些代碼嗎? – reporter 2011-05-09 12:34:52

回答

4

由於安全策略,它被限制在什麼樣的輸入類型的事件歌劇院火災=文件。另外,在新的Opera版本中,將輸入文件調出來會產生文件對話框,因此無論如何都不會有關鍵事件觸發輸入。如果您需要知道該值何時更改,請收聽更改事件。

+0

來自源代碼的答案。只能+1這一個:D – 2011-05-17 05:13:02

+0

還請注意,當開發者開放時,FileDialog不適用於Opera。 – efkah 2015-04-12 18:56:20