У нас проблема с поведением поля только для чтения в 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-страницы: