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