Как изменить контроль видимости форм Orbeon во время выполнения? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь выяснить, как изменить видимость элемента управления для текстового поля во время выполнения для формы Orbeon.В следующем примере я создал кнопку с изображением - когда пользователь нажимает на эту кнопку, я хочу показать / скрыть другую кнопку, но, к сожалению, мой код не работает должным образом:

<xf:trigger> 
                            <xf:label>
                                <xf:output value="concat('&lt;img src=''http://**********:8081/green-light.png', image, '''&gt;')"
                                           mediatype="text/html"/>
                            </xf:label> 
                            <xxf:script event="DOMActivate">
                              var remarksControl = ORBEON.jQuery('*[id $= "remarks-control"]')[0];
                                remarksControl.hidden= true;
                            </xxf:script>  
                        </xf:trigger> 

                        </fr:c>
                    <fr:c y="1" x="7" w="6">

                    </fr:c>
                    <fr:c x="1" y="2" w="6">
                        <xf:input id="remarks-control" bind="remarks-bind">
                            <xf:label ref="$form-resources/remarks/label"/>
                            <xf:hint ref="$form-resources/remarks/hint"/>
                            <xf:alert ref="$fr-resources/detail/labels/alert"/>                                                                                                                                              
                        </xf:input>
                    </fr:c>

Каков наилучший подходреализовать этот вид функциональности?Чего я на самом деле пытаюсь добиться, так это иметь форму с несколькими изображениями, и пользователь, нажимая на изображение, сможет активировать / деактивировать несколько текстовых полей в форме.

Заранее спасибо

1 Ответ

0 голосов
/ 15 июня 2019

Я бы постарался не использовать JavaScript для обработки подобных случаев.Кнопка привязана к элементу, как и любой другой элемент управления.Таким образом, вы пишете некоторые XForms, которые хранят значение, скажем show-textfield, при нажатии кнопки.Предполагая, что ваша кнопка названа button, вы можете сделать это со следующей пользовательской моделью :

<xf:model xmlns:xf="http://www.w3.org/2002/xforms">

    <xf:action
        observer="button-control"
        event="DOMActivate">
        <xf:setvalue ref="event('xxf:binding')">show-textfield</xf:setvalue>
    </xf:action>

</xf:model>

Тогда элемент управления, который вы хотите показать при нажатии кнопки, может иметь видимостьформула $button = 'show-textfield'.В результате вы получите такой результат, как:

Clicking on the button shows the textfield

...