2017-06-24 69 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

相关问题