XSLTForms/XForms 2.0/"dialog" 元素
外观
< XSLTForms | XForms 2.0
"dialog" 元素允许以弹出窗口的方式显示和隐藏控件。
对话框是一个带有必填的@id 属性的容器控件。它可以放置在 (X)HTML body 元素中的任何位置,考虑到它将被 XSLTForms 的 XSLT 步骤转换为一个禁用的(或隐藏的)DIV 元素。
对话框使用 z-index 属性在模态弹出窗口中呈现,另一个 DIV 元素覆盖所有主要元素,具有较低的 z-index 值,以禁用与控件的交互。当在对话框中更改控件值时,所有其他控件都可以刷新,无论它们是在此对话框中还是在其他地方。XSLTForms 尚未支持标签,并且没有 X 触发器。
对话框可以嵌套。祖先对话框会自动屏蔽,更改覆盖 DIV 的 z-index 属性。
定义了两个操作用于对话框管理
- "show":此操作将启用由 @dialog 属性值标识的对话框
- "hide":此操作将禁用由 @dialog 属性值标识的对话框
通常,对于每个对话框,至少应该有一个触发器用于显示(打开)它,以及另一个触发器用于隐藏(关闭)它。
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events">
<head>
<title>Contact</title>
<style type="text/css">
#details {
width: 250px;
height: 100px;
}
</style>
<xf:model>
<xf:instance xmlns="">
<contact>
<email/>
<firstname/>
<lastname/>
</contact>
</xf:instance>
<xf:bind ref="email" type="xf:email"/>
<xf:setfocus ev:event="xforms-ready" control="email"/>
</xf:model>
</head>
<body>
<xf:dialog id="details">
<xf:input id="firstname" ref="firstname">
<xf:label>First Name : </xf:label>
</xf:input>
<br/>
<xf:input ref="lastname">
<xf:label>Last Name : </xf:label>
</xf:input>
<br/>
<xf:trigger>
<xf:label>Close</xf:label>
<xf:action ev:event="DOMActivate">
<xf:hide dialog="details"/>
<xf:setfocus control="email"/>
</xf:action>
</xf:trigger>
</xf:dialog>
<xf:group>
<xf:label>Contact Information</xf:label>
<xf:input id="email" ref="email" incremental="true">
<xf:label>E-mail : </xf:label>
</xf:input>
<xf:trigger>
<xf:label>Details</xf:label>
<xf:action ev:event="DOMActivate">
<xf:show dialog="details"/>
<xf:setfocus control="firstname"/>
</xf:action>
</xf:trigger>
</xf:group>
</body>
</html>
- W3C XForms WG Wiki - XForms 1.2 的对话框候选规范
- AJAXForms 附加组件 - 特定的对话框附加组件
- Orbeon 对话框扩展