2011-01-03 1 views
1

シナリオ:オプション「上記のどれもが、」選択されていない場合は、他のオプションも選択されている場合「上記のオプションはありません」オプションが選択されている場合、XFormsチェックボックスを無効にするにはどうすればよいですか?

<xf:select appearance="full"> 
    <xf:item> 
     <xf:label>Vanilla</xf:label> 
     <xf:value>vanilla</xf:value> 
    </xf:item> 
    <xf:item> 
     <xf:label>Strawberry</xf:label> 
     <xf:value>strawberry</xf:value> 
    </xf:item> 
    <xf:item> 
     <xf:label>None of the above</xf:label> 
     <xf:value>none</xf:value> 
    </xf:item> 
</xf:select> 

、制御は無効としてマークされなければなりません。どうすればこれを達成できますか?

+0

また、上記のいずれかが選択されているときにコントロールを無効にするのではなく、「。 – avernet

+0

@Dmitre、XPathが呼び出された時から "xpath"タグを削除した理由はわかりません! – ebruchez

答えて

2

あなたはこのようになりますXPathの制約でこれを行うことができます。これは何が行うことは以下の通りです

<xf:bind 
    ref="my-value" 
    constraint=" 
     if (tokenize(., '\s+') = 'none') then 
      count(tokenize(., '\s+')) = 1 
     else 
      true()"/> 

  • 選択し、「なし」の値がある場合、そのことを確認してくださいその値(count() = 1
  • が存在しない場合、コントロールは無効としてマークされます。
  • "none"オプションが選択されていない場合、コントロールは次のようになります。

    <xf:bind 
        ref="my-value" 
        calculate="if (tokenize(., '\s+') = 'none') 'none' else ." 
        readonly="false()"/> 
    

    これが何をしている:

    アレックスはおよそ上記の指摘するように、ユーザが「なし」オプションを選択したときに有効な

代わりに、またはそれに加えて、あなたは自動的に他のオプションを選択解除することができ

  • 選択し、「なし」の値がある場合、その後、値のみ
  • そうでない場合は「なし」に設定されていることを確認し
  • あるとして値を保ちますまた
  • 値は読み取り専用でないことを確認

UPDATE 2016年11月25日(計算に使用されるデフォルトにされるであろう):

原液としても表現することができます。

<xf:bind 
    ref="my-value" 
    constraint=". = 'none' or count(tokenize(., '\s+')) != 1"/> 
0

contains()xpath関数が要件に最も適しています。コードは次のようになります。

<xforms:bind nodeset="instance('myform')/node1" 
    constraint="not(contains(.,'none'))" /> 

しかし他の人があなたは、ユーザーがそれを選択した場合でも、それはあなたの選択に追加したくない場合は、「」で「どれも」を置き換えることはできない、言ったように。

関連する問題