Как включить или отключить поле при изменении значения другого поля? - PullRequest
1 голос
/ 19 декабря 2011
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:xforms="http://www.w3.org/2002/xforms">

<xhtml:head>
  <xhtml:title>Orbeon XForms Sample Form</xhtml:title>

  <xforms:model>
     <xforms:instance id="myModel" xmlns="">
    <form>
            <type>

                <radio></radio>
            </type>
            <type>

                <radio></radio>
            </type>
            <type>

                <radio></radio>
            </type>
    </form>
     </xforms:instance>



     <xforms:bind id="radio" nodeset="instance('myModel')/type/radio"/>


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

<xhtml:body>

    <table>
        <tr>

        </tr>
        <tr><td>
            <table>

            <xforms:repeat nodeset="instance('myModel')/type">

                <tr>
                    <td>
                        <xforms:output ref="position()"/>
                    </td>
                    <td/>
                    <td>
                        <xforms:select1 ref="radio" incremental="true" appearance="minimal">
                            <xforms:item>
                                <xforms:label>Please Select</xforms:label>
                                <xforms:value></xforms:value>
                            </xforms:item><xforms:item>
                                <xforms:label>Yes</xforms:label>
                                <xforms:value>Yes</xforms:value>
                            </xforms:item>
                            <xforms:item>
                                <xforms:label>No</xforms:label>
                                <xforms:value>No</xforms:value>
                            </xforms:item>
                            <xforms:alert>Required</xforms:alert>
                        </xforms:select1>
                    </td>
                </tr>
            </xforms:repeat>
            </table>
        </td>
        </tr>

    </table>

</xhtml:body>

</xhtml:html>

В приведенной выше форме я хочу включить поле на основе значения, выбранного в предыдущем поле.Например, если я выберу Да в первом раскрывающемся списке, только тогда следует включить второе раскрывающееся меню.Если я выберу Да во втором раскрывающемся списке, только тогда следует включить третий раскрывающийся список и т. Д.Как я могу это реализовать?Могу ли я что-то сделать в событии xforms-value-change?Или я могу реализовать это в xforms: bind?

1 Ответ

2 голосов
/ 20 декабря 2011

Как вы и подозревали, вы можете сделать это с xforms:bind.Следующее выполнит работу в вашем примере:

<xforms:bind id="radio" nodeset="instance('myModel')/type/radio"
    relevant="empty(../preceding-sibling::type)
              or ../preceding-sibling::type[1]/radio = 'Yes'"/>

Самая тонкая часть здесь - это использование предшествующей оси для получения элемента type, который находится перед текущимодин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...