从JavaScript asp.net调用按钮点击;不起作用
本文关键字:不起作用 按钮 调用 JavaScript asp net | 更新日期: 2023-09-27 18:27:48
我试图通过JavaScript调用服务器端方法,首先显示一条确认消息,然后触发页面上的按钮点击来调用该函数。但是,.click()方法似乎不起作用。有什么想法吗?
<script type="text/javascript">
function confirmDelete() {
var button = document.getElementById("hiddenButton");
if (confirm("Are you sure you would like to delete the row")) {
button.click();
}
}
</script>
按钮定义如下
<asp:Button ID="hiddenButton" runat="server" onclick="showHiddenMessage" Text="hidden" width="100px" />
我所发现的一切都表明它应该如此。包括这里:
http://www.comptechdoc.org/independent/web/cgi/javamanual/javabutton.html
这里:
从JavaScript调用ASP.NET函数?
var button = document.getElementById('<% =hiddenButton.ClientID %>');
客户端上服务器端控件的Id不同。如上所述修改代码并尝试。
修改confirmDelete()
方法如下:
function confirmDelete() {
if (confirm("Are you sure you would like to delete the row")) {
__doPostBack(( 'hiddenButton', '' );
}
}
查看Button
的ClientIDMode
属性。将其设置为Static将导致按钮使用您在ASP.NET代码中输入的ID进行呈现。https://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx
<asp:Button ID="hiddenButton" runat="server" ClientIDMode="Static" onclick="showHiddenMessage" Text="hidden" width="100px" />
如果您查看生成的HTML,您应该会看到该按钮的ID为hiddenButton,这应该允许您的Javascript工作。
默认情况下,ClientIDMode值将为Inherit,并将在ID中包含NamingContainer
。这意味着渲染的HTML的ID将类似于Panel_hiddenButton并且您的Javascript在当前代码中找不到它。
供参考:
- 静态-ClientID值设置为ID属性的值。如果控件是命名容器,则该控件将用作其包含的任何控件的命名容器层次结构的顶部
- Inherit-控件继承其NamingContainer控件的ClientIDMode设置
但是为什么不在按钮中使用javascript函数呢?我觉得更好:
<script type="text/javascript">
function confirmDelete() {
if (confirm("Are you sure you would like to delete the row?")) {
return true;
}
return false;
}
还有你的按钮:
<asp:Button ID="hiddenButton" runat="server" OnClientClick="return confirmDelete();" onclick="showHiddenMessage" Text="hidden" width="100px" />
在这种情况下,如果用户单击"确定"按钮,则会出现showHiddenMessage
功能。否则什么都不会发生。