为什么我的JS函数执行onload而不是onchange?

时间:2016-05-11 06:11:27

标签: javascript jquery input javascript-events

以下是代码:

window.onload = function() {
    oldonload && oldonload();

    function test() {
        alert("meh");
    }    

    $('input[type=file]').change(test());
}

代码非常简单,只有在test()更改时才会调用input[type=file]。但是,只要我的网页已加载,就会调用test()

这里发生了什么?只有当用户与输入元素交互时,我才会如何执行该功能?

4 个答案:

答案 0 :(得分:6)

您正在此行上调用方法:

$('input[type=file]').change(test());

将其更改为:

$('input[type=file]').change(test);

如果要将参数传递给test

var myVar = 5;
$('input[type=file]').change(function () {
   test(myVar); 
});

答案 1 :(得分:2)

只需像这样更改文件更改事件:

 $('input[type=file]').change(function() { test() });

答案 2 :(得分:2)

您正在执行immedietaly函数而不是分配处理程序。你应该这样做:

$('input[type=file]').change(test);

答案 3 :(得分:1)

change将函数作为参数,因此您只需要提供要调用的函数名称。

<scope>provided</scope>