跳转到内容

XSLTForms/XForms 2.0/"dialog" 元素

来自维基教科书,开放的书籍,开放的世界

"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>

参考文献

[编辑 | 编辑源代码]
  1. W3C XForms WG Wiki - XForms 1.2 的对话框候选规范
  2. AJAXForms 附加组件 - 特定的对话框附加组件
  3. Orbeon 对话框扩展
华夏公益教科书