2017-06-24 92 views
-2

我花了大量時間解決JavaScript中的一個問題。代碼片段如下所示。本文中省略了其他部分html,FormTable的詳細信息。Onclick函數未在JavaScript中調用

<input id="btn" type="button" value="Save Customer" onclick="SaveData" /> 

<script lang="javascript"> 

function BindData(Data) 
{ 
    $("#status").text("Loading......"); 
    //This removes all other rows except first 
    tbl.find("tr:gt(0)").remove(); 
    //More logic is there to fill a table 
} 

function SaveData() 
{ 
    $("#status").text("Adding data. Please wait......"); 
    var frm = $("#frmCustomer").serialize(); 
    $.post("Submit", frm, BindData); 
} 

</script> 

在HTML的onclick事件的語法在w3schools定義爲:

<element onclick="myScript"> 

我把我的代碼的鏈接(思維是真實的)和過度看它之後。現在,這又提出了另一點:爲什麼在函數名後面提供()是必須的?可以保存2個字符,只允許提及函數名的語法(顯然對於沒有參數的函數)。

+1

'onclick =「SaveData()」'? https://jsfiddle.net/2y6s80cz/ –

+0

是否有你混合內聯事件和jQuery的原因? – Soviut

+0

傻了。保持俯視。也許許多來自jquery的函數調用讓我想到沒有()的函數。謝謝。 – MKR

回答

1

您需要在您的onclick中包括括號。

onclick="SaveData()" 

注:你已經在使用jQuery,所以你並不需要使用內聯事件。你可以完全刪除您onclick="SaveData()"做:

function BindData(Data) { 
    // ... 
} 

function SaveData() { 
    // ... 
} 

$('#btn').on('click', SaveData); 

值得注意的是,任何事件處理函數的第一個參數(在這種情況下,您的SaveData功能)將是包含的東西等,其中事件來自的事件對象,等等。

關於事件處理的更多信息,請閱讀jQuery .on() here

相關問題