W3C home > Mailing lists > Public > www-forms@w3.org > June 2005

Re: Hide/show select options

From: Swithun Crowe <swithun@swithun.servebeer.com>
Date: Mon, 6 Jun 2005 13:50:20 +0100 (BST)
To: Jonathan Curtis <Jonathan.Curtis@sesame.co.uk>
cc: www-forms@w3.org
Message-ID: <Pine.LNX.4.61.0506061344340.18769@abednego.swithun.servebeer.com>

Hello
Something you could try is replacing:

<xf:itemset nodeset="instance('form_data')/select/item">

with something like:

<xf:itemset nodeset="instance('form_data')/select/item[position() != 3
or instance('inst') = 1]">

(include any item which is either not the third one, or if 'inst' is 1,
which is what your relevant bind says)

So you have the logic deciding which items to include in the itemset in
the nodeset attribute, rather than relying on a bind.

Don't know how elegant you would call this, but it should work.

SWithun.


On Mon, 6 Jun 2005, Jonathan Curtis wrote:

> Hi all,
>
> I have a situation where I need to hide or show an option in a select1 based on a value of another node. Whats the best approach to doing this?
>
> At the moment I am using this:
>
> <html xmlns:xf="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
>     <head>
>         <title>Test XForm</title>
>         <xf:model>
>             <xf:instance id="inst">
>                 <test>1</test>
>             </xf:instance>
>             <xf:instance id="form_data">
>                 <form_data>
>                     <select>
>                         <value>1</value>
>                         <item>
>                             <label>one</label>
>                             <value>1</value>
>                         </item>
>                         <item>
>                             <label>two</label>
>                             <value>2</value>
>                         </item>
>                         <item>
>                             <label>three</label>
>                             <value>3</value>
>                         </item>
>                     </select>
>                 </form_data>
>             </xf:instance>
>             <xf:bind id="test" nodeset="/test"/>
>             <xf:bind id="select" nodeset="instance('form_data')/select/value"/>
>             <xf:bind nodeset="instance('form_data')/select/item[3]" relevant="instance('inst') = 1"/>
>         </xf:model>
>     </head>
>     <body>
>         <xf:input bind="test">
>             <xf:label>test</xf:label>
>         </xf:input>
>         <xf:select1 bind="select">
>             <xf:label>Select</xf:label>
>             <xf:itemset nodeset="instance('form_data')/select/item">
>                 <xf:label ref="label"/>
>                 <xf:value ref="value"/>
>             </xf:itemset>
>         </xf:select1>
>     </body>
> </html>
>
> With the Novell XForms plugin the option is greyed out when not applicable, but you can still select the option. Formsplayer doesn't recognise the item is not relevant.
>
> I'm looking for the most elegant way to achieve this.
>
> Thanks,
>
> Jon
>
> ________________________________________________________________________
> This e-mail has been scanned for all viruses by Star. The
> service is powered by MessageLabs. For more information on a proactive
> anti-virus service working around the clock, around the globe, visit:
> http://www.star.net.uk
> ________________________________________________________________________
Received on Monday, 6 June 2005 12:50:42 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 10 March 2012 06:22:01 GMT