2016-05-11 41 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); 
相關問題