我正在开发一个asp.net应用程序,我需要在后面的代码上调用一个确认对话框。之后,我需要获得用户的点击(如果他点击确定或取消)。
如果他点击对话框的OK按钮,我必须继续运行我停止的代码,然后才能调用对话框。
为了解决这个问题,我想在aspx中输入一个类型按钮的输入,并将它的样式设置为visibility:hide。因此,当用户单击“确定”按钮时,程序将调用此隐藏按钮,该按钮调用将继续停止作业的方法。
我会发布我的代码,我希望它可以提供帮助。
下面的代码在我的代码后面,它调用了确认对话框。
System.Web.UI.
ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage + "')){document.getElementById(\'<%=btnSave.ClientID%>\').click();}", true);
下面的代码在我的aspx上,它是“隐藏”按钮。
<input style="visibility:hidden;" id="btnSave" runat="server" onclick="btnSave_Click"/>
我不知道为什么不工作。单击确认对话框的确定按钮后收到的错误如下:Erro em tempodeenduçãodoMicrosoft JScript:'document.getElementByID(...)'énuloounãoéumobjeto
我来自巴西所以错误是葡萄牙语,英语翻译就像这样:
“Microsoft JScript上发生运行时错误'document.getElementByID(...)'为null或不是对象”
我看一下页面的html代码,我注意到按钮不存在。
也许是因为我正在使用UpdatePanel,但是当我删除它时(仅用于测试,我必须使用更新面板),显示相同的错误,并且此时按钮位于页面的html代码上。
答案 0 :(得分:1)
在黑暗中刺伤。
在您的代码隐藏中,您设置了btnSave.visible = false;
吗?如果是这样,这将阻止按钮呈现为HTML
。
另外,您是否有任何理由不使用ASP:按钮控件,而不是HTML与runat="server"
的混合?
最后,type='button'
<input....
可能会有所帮助
<强>更新强>
问题是您正在尝试应用内联标记
document.getElementById(\'<%=btnSave.ClientID%>\')
<%=btnSave.ClientID%>
尚不存在。
当您将按钮放在另一个服务器控件中时,您的代码将会中断,因为clientId会变得不同。
将代码更改为:
document.getElementById('" + btnSave.ClientID + "')
无论您在哪里都有按钮,它都能正常工作。
答案 1 :(得分:0)
在浏览器中呈现页面后,右键单击它,然后说出“查看源”。检查HTML并尝试查找隐藏按钮,如果找到,请在语句getElementById(\'<%=btnSave.ClientID%>\')
中使用其ID。如果你没找到你的按钮,那么你可能已经从代码隐藏处将其可见性设置为false,删除它,再次按照上述过程进行操作,你应该没问题。
答案 2 :(得分:0)
我解决了替换部件的问题
document.getElementById(\'<%=btnSave.ClientID%>\').click();
通过
$(\"#ctl00_body_btnSave\").click();
我也用asp:Button替换输入元素。
现在看看我的代码在我的代码背后是什么:
System.Web.UI.
ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage+ "')){$(\"#" + btnSave.ClientID + "\").click();}", true);
在我的aspx上:
<asp:Button id="btnSave" Width="0px" Text="" runat="server" onclick="btnSave_Click"/>
不建议使用Widht =“0px”和Text =“”来隐藏按钮,但我使用它是因为它不会给我带来问题。建议使用CssClass使其隐藏。
因此,如果用户确认操作,则调用偶数btnSave_Click。
感谢所有答案。