2011-11-14 4 views
3

ラジオボタンコントロールが2つあります。ラジオボタンのグループの中の1つのオプションを無効にすることはできますか?

<xforms:select1 ref="add-delete" appearance="full"> 
    <xforms:item> 
     <xforms:label>Add</xforms:label> 
     <xforms:value>A</xforms:value> 
    </xforms:item> 
    <xforms:item> 
     <xforms:label>Delete</xforms:label> 
     <xforms:value>D</xforms:value> 
    </xforms:item> 
</xforms:select1> 

私は私がこれを実行するにはどうすればよいだけのラジオボタンを無効にする「削除」とラジオボタンが条件X上で「追加」しないようにしたいですか?

xforms:itemでclass属性を使用しようとしましたが、動作しません。これを行う他の方法はありますか?

答えて

2

良い質問です。残念ながら、これは次のように簡単ではありません。

無効ラジオボタンを非表示にしたい場合は、で「削除」の<xforms:item>を置き換えることができます。そのラジオボタンが表示されないようにするには、関連性のないノードにバインドします。しかし、同じテクニックを使用して、項目セットを読み取り専用のノードにバインドしてラジオボタンを無効にすることはできません。 (あなたがそれを行うことができればそして、はい、それは良いでしょう。)

を現状では、私はあなたがする必要があると思う:

  1. は2 <xforms:select1>を作成します。 1つは「追加」、もう1つは「削除」のため、ある条件で2番目のものを読み取り専用にすることができます。
  2. 読み取り専用にするには、「追加」も読み取り専用にしないようにするには、それらを2つの別個のノードにバインドする必要があります。
  3. ノードをAまたはDのいずれかにしたい場合は、2つの値に基づいてノードを設定するためにcalculateを作成する必要があります。
  4. 値を排他的にする場合は、<xforms:select1>が2つある場合は一致しないので、「追加」を選択してxforms-selectを選択すると「削除」の選択を解除する必要があります。

    <xforms:instance> 
        <instance> 
         <add/> 
         <delete/> 
         <add-delete/> 
         <delete-enabled>true</delete-enabled> 
        </instance> 
    </xforms:instance> 
    <xforms:bind ref="add-delete" calculate="string-join((../add, ../delete), ' ')"/> 
    <xforms:bind ref="delete" readonly="../delete-enabled = 'false'"/> 
    

    を、ビュー内:

  5. モデルで

、あなたが持っているでしょう

<xforms:select1 ref="instance()/add" appearance="full"> 
    <xforms:item> 
     <xforms:label>Add</xforms:label> 
     <xforms:value>A</xforms:value> 
    </xforms:item> 
    <xforms:setvalue ev:event="xforms-select" ref="instance()/delete"/> 
</xforms:select1> 
<xforms:select1 ref="instance()/delete" appearance="full"> 
    <xforms:item> 
     <xforms:label>Delete</xforms:label> 
     <xforms:value>D</xforms:value> 
    </xforms:item> 
    <xforms:setvalue ev:event="xforms-select" ref="instance()/add"/> 
</xforms:select1> 

そして、この例の完全なソースのthis Gistを参照してください。

+0

解決していただきありがとうございます。フォームにノードを追加できるかどうか試してみてください。そうでなければ、無効にする代わりにラジオボタンを隠すようにしてください。 – Akshay

関連する問題