首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Orbeon形式的只读场行为

Orbeon形式的只读场行为
EN

Stack Overflow用户
提问于 2012-10-05 20:45:15
回答 1查看 1.2K关注 0票数 0

我们对Orbeon表单中的字段只读行为有一个问题。我们通常在绑定定义中写入条件,以判断何时应该只读字段,因此当满足条件时,表单上的字段(HTML浏览器)将不可编辑。

但是,在该字段的HTML源中,我们看到该字段包含属性disabled=“禁用”,而不是readonly=“只读”。由于属性disabled=“禁用”,输入字段中的数据将以灰色显示(IE浏览器,windows默认外观),它看起来模糊/迟钝,因此无法正确查看。此外,我们不能通过css属性更改禁用字段的输入数据的颜色,但是对于具有属性readonly="readonly“的字段,我们可以这样做。

因此,问题是,当我们在Orbeon代码中的绑定定义中说readonly="true“时,是否可以将readonly="readonly”而不是disabled=“禁用”作为HTML上的字段的属性?

示例Orbeon代码和HTML页面源快照如下

代码语言:javascript
复制
<xhtml:html xmlns:xforms="http://www.w3.org/2002/xforms"
    xmlns:f="http://orbeon.org/oxf/xml/formatting"
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
    xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
    xmlns:ev="http://www.w3.org/2001/xml-events"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    >

    <xhtml:head>
        <xforms:model xmlns:xforms="http://www.w3.org/2002/xforms"
                xmlns:xs="http://www.w3.org/2001/XMLSchema" id="main-model">

          <xforms:instance id="form-instance">
            <form>
              <field-1></field-1>
              <field-2></field-2>
              <field-3></field-3>
            </form>
          </xforms:instance>

          <xforms:instance id="form-attributes">
            <attributes>
                <summary>false</summary>
            </attributes>
          </xforms:instance>

          <xforms:bind id="summary" nodeset="instance('form-attributes')/summary" />
          <xxforms:variable name="summary" select="instance('form-attributes')/summary" />

          <xforms:bind nodeset="instance('form-instance')" readonly="$summary='true'" />

          <xforms:bind id="field-1" nodeset="instance('form-instance')/field-1" />
          <xforms:bind id="field-2" nodeset="instance('form-instance')/field-2" />
          <xforms:bind id="field-3" nodeset="instance('form-instance')/field-3" />

        </xforms:model>
    </xhtml:head>

    <xhtml:body>

      <table>
        <tr>
            <td>
                <xforms:trigger appearance="minimal" id="readonly-view">
                    <xforms:label>Readonly View</xforms:label>
                    <xforms:action ev:event="DOMActivate">
                        <xforms:setvalue bind="summary" value="'true'" />
                    </xforms:action>
                </xforms:trigger>
            </td>
            <td>
                <xforms:trigger appearance="minimal" id="editable-view">
                    <xforms:label>Editable View</xforms:label>
                    <xforms:action ev:event="DOMActivate">
                        <xforms:setvalue bind="summary" value="'false'" />
                    </xforms:action>
                </xforms:trigger>
            </td>
        </tr>
        <tr>
            <td>
                Field 1: 
            </td>
            <td>
                <xforms:input bind="field-1" id="field-1-id" xxforms:maxlength="10" /> 
            </td>
        </tr>
        <tr>
            <td>
                Field 2: 
            </td>
            <td>
                <xforms:input bind="field-2" id="field-2-id" xxforms:maxlength="10" /> 
            </td>
        </tr>
        <tr>
            <td>
                Field 3: 
            </td>
            <td>
                <xforms:input bind="field-3" id="field-3-id" xxforms:maxlength="10" /> 
            </td>
        </tr>
      </table>

    </xhtml:body>
</xhtml:html>

HTML页面源的快照:

EN

回答 1

Stack Overflow用户

发布于 2012-10-08 22:55:37

此时,正如您注意到的,Orbeon在只读表单字段上生成disabled="disabled",而不是readonly="readonly",如果不更改Orbeon,就不能更改这一点。

解决您的问题的一个可能的解决方案是使用只读控件的静态外观,它只显示字段的值,其方式类似于xf:output会做什么,而不是只读表单字段。这对于非常容易地创建评审页面非常有用,在这些页面中,您可以向用户显示他们在提交之前输入的所有值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12753774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档