我当前正在开发的网站遇到问题。我试图在外部 js 文件中的一系列代码之后触发按钮的 Click 事件。请参阅下面我的代码:
.ASPX:
<script type="text/javascript">
var btn = $("#<%=btnRefresh.ClientID%>");
</script>
...
<asp:Button ID="btnRefresh" name="btnRefresh" runat="server" Visible="false" Text="btnRefresh" onclick="btnRefresh_Click" />
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<asp:GridView ID="myGrd" runat="server">...</GridView>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnRefresh" EventName="Click" />
</Triggers>
<asp:UpdatePanel>
.ASPX.CS:
protected void btnRefresh_Click(object sender, EventArgs e)
{
myGrd.DataSource = null;
myGrd.DataSource = GetData();
myGrd.DataBind();
}
.JS:
function Refresh() {
if (btn) {
btn.click();
}
else {
alert('false');
}
}
基本上,我想要实现的是:
- 能够在页面上实现我的添加、编辑、删除。 (现已运行)
- 调用外部JS文件中的方法,显示添加、编辑、删除的弹框。
- 成功后,调用
Refresh()
方法并仅刷新 gridview。 Refresh()
方法使用 .aspx.cs 页面中的btnRefresh_Click
事件。
我只是将按钮用于此目的,因为我不知道还有哪些其他选项。
现在我的问题是这样的。我的代码能够从 .aspx 页面声明我的 btn
变量。当它在外部 .js 文件中执行时,我的 btn
变量如下所示:
编译器会执行 btn.click()
行,该行应该从代码隐藏中触发 btnRefresh_Click
事件。但是,它没有启动。
我在这里遗漏了什么吗?请帮我。我已经被困在这里几个小时了。
最佳答案
您是否尝试过在需要时以及文档完全加载后查找 btn 对象,而不是在文档完全加载之前获取它?
改变:
<script type="text/javascript">
var btn = $("#<%=btnRefresh.ClientID%>");
</script>
至
<script type="text/javascript">
var btnid = "#<%=btnRefresh.ClientID%>";
</script>
和你的js:
function Refresh() {
var btn = $(btnid);
if (btn) {
btn.click();
}
else {
alert('false');
}
}
关于javascript - ASP :Button Click Event doesn't fire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12507087/