2016-05-11 37 views
1

下面的代码:为什么我的JS函数执行onload而不是onchange?

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

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

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

的代码是相当简单的,test()只有当input[type=file]改变调用。然而,test()正在被我们的页面调用加载时被调用。

这是怎么回事?只有当用户与输入元素交互时,我将如何执行该功能?

+0

它发生在负载上,因为你这么说,请使用onclick。 –

回答

6

要调用在这条线的方法:

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

将其更改为:

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

如果你想一个参数传递给test

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

这是什么时候一个后卫被分配做前端工作....完美的工作非常感谢你。我花了数小时试图弄清楚它! –

+0

等一下,我怎么会传递一个参数给'test()'? –

+0

然后,你可以用@ DharaParmar的例子来使用围绕'test(myVar)的匿名函数;' – Arg0n

2

只是改变文件更改事件是这样的:

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

帕默感谢! +1为您提供帮助! –

2

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

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

感谢:) +1提示帮助! –

1

change需要的功能参数,所以你只需要提供函数名被调用。

$('input[type=file]').change(test); 
相关问题