ASP.Net/C# 未捕获的 ReferenceError:<function> 未在 HTMLInputElement.onclick 处定义
2017-11-02
3090
首先,我从页面标题中看到了很多关于这种情况的问题和答案,其中使用了 JavaScript 函数。我正在使用 C#,并在 CodeBehind 文件中定义了事件处理程序。
这是创建按钮的代码:
Button btnDelete = new Button()
{
ID = "btnLeadershipRowDelete" + index.ToString(),
Text = "-"
};
btnDelete.OnClientClick = "BtnDeleteRow_Click";
btnDelete.Attributes.Add("style", "display: inline-block; width: 1.4em;");
pnlLeadershipControls.Controls.Add(btnDelete);
这是为同一按钮呈现的 HTML:
<input type="submit" name="ctl00$ctl00$cphContent$cphContent1$btnLeadershipRowDelete0" value="-"
onclick="BtnDeleteRow_Click;" id="ctl00_ctl00_cphContent_cphContent1_btnLeadershipRowDelete0"
style="display: inline-block; width: 1.4em;" />
这是我尝试调用的事件处理程序方法:
protected void BtnDeleteRow_Click(object sender, EventArgs e)
{
DeleteControls(sender);
}
当我在 Chrome 中单击按钮时,什么也没有发生。查看 Chrome 中的开发控制台,我发现以下错误:
default.aspx:1 Uncaught ReferenceError: BtnDeleteRow_Click is not defined at HTMLInputElement.onclick (default.aspx:1)
我不知道我做错了什么。任何想法都会有所帮助!
2个回答
这就是我发表第一条评论的原因。您应该知道
OnClientClick
和
Click
之间的区别。
如果您想为动态按钮分配方法,您需要这样做
btnDelete.Click += BtnDeleteRow_Click;
VDWWD
2017-11-02
请将“()”添加到您的 onclick 事件中。
Delete.OnClientClick = "BtnDeleteRow_Click()";
这将在单击按钮时执行函数
BtnDeleteRow_Click
,而不是引用它。
说明:
如果您对元素使用内联 onclick 处理程序,则将直接执行该值。
<input type="submit" name="buttonName" value="-" onclick="BtnDeleteRow_Click();" id="buttonId" />
如果您在 JavaScript 代码中分配处理程序,则 onclick 函数的引用将被新函数替换
btnLeadershipRowDelete.onclick = BtnDeleteRow_Click;
或使用匿名包装函数
btnLeadershipRowDelete.onclick = function() {
BtnDeleteRow_Click();
};
Reinhard
2017-11-02