基于多个复选框值的可见性
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()
.
我仍在寻找 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()
.