我已经开发了一个网站,其中包含大量 updatePanel、按钮和集成功能。
我必须添加一些确认提示,这些提示应该是自定义的,并且有“继续”、“取消”等选项。
这是一种可能的情况:
- 用户在一个文本框中写入一些内容,然后单击提交按钮。
- 出现提示。
- 当用户单击“继续”时,页面应继续正常流程,而当按“取消”时,应停止提交操作。
我希望尽可能不那么突兀,实现这一目标的最佳方法是什么?
编辑:
我无法使用任何像 Jquery 这样的库。我可以使用 ModalPopupExtenders,或者简单的样式 div。
从根本上来说,问题是当单击此提交按钮时,即使我在 onclick 事件中添加 JS 函数,也会执行提交操作,但我的弹出窗口不会出现。
我可以 ClearAll 提交按钮处理程序,添加显示弹出窗口的按钮处理程序,但是当单击弹出窗口的“继续”按钮时,如何继续执行“提交”操作?
最佳答案
编辑:回答您的更新问题:
- Hook 表单的
submit
事件,触发弹出窗口,并返回 false(如果使用 DOM0 或 jQuery 处理程序),或者调用preventDefault
(如果使用现代处理程序)。 - 当您准备好真正提交表单时,请调用表单的
submit
函数。这不会在一致的浏览器上触发submit
事件(显然,请使用所有目标浏览器进行测试)
原答案:
Zoidberg 指出了一种具体的实现(据我所知,这是一个很好的实现)。还有其他几个。
一般原理是这样的:
- 创建一个绝对定位的
iframe
,覆盖页面上的所有内容;如果您愿意,您可以使用iframe
上的不透明度将其覆盖的所有内容“灰显”。iframe
不必包含任何内容,它只是作为背景。这通常称为“iframe
shim”技巧。为iframe
指定高于页面上任何其他元素的 z 索引。 - 在
iframe
顶部(z 顺序较高)创建一个绝对定位的div
,其中包含对话框和用户拥有的选项。请注意,这不在iframe
的文档中,它是主页 DOM 的一部分。 - 当用户选择一个选项后,删除您的
div
和iframe
并执行您需要执行的任何其他操作(转到另一个页面、更新内容等) .
iframe
至少有几个用途:
- 它可以让您轻松地将底层内容变灰
- 它吃鼠标点击
- 它处理 Internet Explorer 上表单字段的问题
编辑:郑重声明,大多数 JavaScript UI 工具包都提供这种“模式”功能,包括 jQuery UI、YUI、Dojo、Glow...
关于asp.net - 优雅的 WebForms、AJAX 和提示弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1373607/