поведение поля только для чтения в Orbeon Forms

У нас проблема с поведением поля только для чтения в Orbeon Forms. Обычно мы пишем условия в определениях привязки, чтобы указать, когда поле должно быть доступно только для чтения, поэтому, когда условие выполняется, поле в форме (HTML-браузер) не будет редактироваться.

Однако в источнике поля HTML-страницы мы видим, что поле содержит свойство disabled = "disabled", но не readonly = "readonly". Из-за свойства disabled = "disabled" данные в поле ввода будут отображаться серым цветом (Браузер IE, внешний вид Windows по умолчанию), и они выглядят размытыми / тусклыми и, следовательно, не могут быть просмотрены правильно. Также мы не можем изменить цвет входных данных с помощью свойств css для отключенных полей, но мы можем сделать это для полей, имеющих свойство readonly = "readonly".

Итак, вопрос в том, когда мы говорим readonly = "true" в определении привязки в коде Orbeon, возможно ли получить свойство как readonly = "readonly" вместо disabled = "disabled" для поля в браузере HTML.

Ниже приведен образец кода Orbeon и исходный снимок HTML-страницы.

<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-страницы:

введите описание изображения здесь


person Jayy    schedule 05.10.2012    source источник
comment
Я обнаружил, что css для цвета вводимого текста не может применяться для отключенных полей. reference.sitepoint.com/css/pseudoclass-disabled   -  person Jayy    schedule 07.10.2012


Ответы (1)


На этом этапе, как вы заметили, Orbeon Forms генерирует disabled="disabled" в полях формы только для чтения, а не readonly="readonly", и это нельзя изменить без изменения Orbeon Forms.

Возможное решение вашей проблемы - использовать статический внешний вид для элементов управления только для чтения, который просто показывает значения полей аналогично тому, как это делает xf:output, а не поле формы только для чтения. Обычно это полезно для очень простого создания страниц обзора, где вы показываете пользователям все введенные ими значения перед их отправкой.

person avernet    schedule 08.10.2012