基于多个复选框值的可见性

Visibility based on value of multiple checkboxes

我仍在寻找 Orbeon。希望有人可以帮助我解决以下问题。我有一个表单,其中 checkboxes input 有五个选项。每个复选框对应一个文本输入字段。您 select 复选框二和文本输入 B 显示。 Select 复选框四和文本输入 D 显示。这很简单,所以在文本输入 D 上,可见性设置为:

$checkboxes_input = 'Four' 

但是,如果我 select 复选框二和复选框四,则显示文本输入的 none。那么如何设置文本输入的可见性,使其根据两个条件显示,例如:

$checkboxes_input = 'Four' or 
($checkboxes_input = 'Two' and $checkboxes_input = 'Four')

Note: Worth saying if I were doing this with JavaScript this would be easy. But I want to do this in the form builder. I see that a previous developer working on this form created a separate checkbox control with a single checkbox for each option required to get around the issue I'm having. Surely that's not required?!

非常感谢:)

更新

似乎以下方法有效:

$checkboxes_input = 'Four' or 
$checkboxes_input = 'Four Two' or 
$checkboxes_input = 'Two Four'

需要四个两个两个四个是为了涵盖select编辑项目的顺序。

这不是很令人满意,因为条件开始变得愚蠢,如果你必须考虑订单选项 selected in(这似乎是你做的)例如我需要跟踪三个复选框所以有:

$checkboxes_input = 'Four' or
$checkboxes_input = 'Four Two' or
$checkboxes_input = 'Four Five' or
$checkboxes_input = 'Two Four' or
$checkboxes_input = 'Two Five' or
$checkboxes_input = 'Five Four' or
$checkboxes_input = 'Five Two' or
$checkboxes_input = 'Four Two Five' or
$checkboxes_input = 'Four Five Two' or
$checkboxes_input = 'Two Four Five' or
$checkboxes_input = 'Two Five Four' or
$checkboxes_input = 'Five Two Four' or
$checkboxes_input = 'Five Four Two'

...哎呀。因此,如果所有依赖于这些选项的逻辑都将开始变得如此混乱,也许毕竟让每个复选框成为其自己的控制器会更好?

知道了:

contains()

...所以就我而言:

contains($checkboxes_input, 'Four')

...所以只要选中值为 Four 的复选框,那么可见性条件就为真。

这里有一个更好的方法:

xxf:split($checkboxes_input) = 'Four'

此表达式将复选框组的 space 分隔值拆分为白色 space,然后检查结果序列中是否包含 'Four'。

此解决方案没有 contains() 解决方案的缺点,如果您有一个项目值包含在另一个项目值中,该解决方案将会失败。说:

contains('baz foobar', 'foo')

returns true().