Opera中的输入类型文件

时间:2011-05-09 12:31:08

标签: javascript jquery input opera keydown

我试图在文件输入上触发onkeydown,onkeypress和onkeyup事件(例如,当元素处于焦点并按下某个键时事件不会被触发),但它们在Opera中不起作用。用jQuery点击'click'也行不通(例如$('#myFileinput')。点击()或$('#myFileinput')。触发('点击'))。

有没有办法在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>

1 个答案:

答案 0 :(得分:4)

由于安全策略,它限制了Opera在输入类型=文件上触发的事件。此外,在新的Opera版本中,聚焦输入将显示文件对话框,因此无论如何都不会在输入上触发任何关键事件。如果您需要知道值何时更改,请侦听更改事件。