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

时间:2017-04-06 09:11:31

标签: forms checkbox orbeon

还在和Orbeon找到我的脚。希望有人可以帮助我以下。我有一个表单,复选框输入有五个选项。每个复选框都有一个文本输入字段。您选择复选框2和文本输入B显示。选择复选框四,文本输入D显示。这很简单,因此在文本输入D上,可见性设置为:

$checkboxes_input = 'Four' 

但是,如果我选中复选框2和复选框4,则不显示任何文本输入。那么如何设置文本输入的可见性,使其基于这两个条件显示,例如:

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

注意:值得一提的是,如果我使用JavaScript执行此操作,这将很容易。但我想在表单生成器中执行此操作。我看到前一个开发此表单的开发人员创建了一个单独的复选框控件   每个选项都有一个复选框,可以解决我遇到的问题。当然这不是必需的吗?!

非常感谢:)

更新

以下情况似乎正在发挥作用:

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

Four Two Two Four 的需要是覆盖选择项目的顺序。

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

$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'

... EEP。因此,如果依赖于这些选项的所有逻辑都将开始变得混乱,那么最好让每个复选框都是它自己的控制器呢?

2 个答案:

答案 0 :(得分:1)

这是一个更好的方法:

xxf:split($checkboxes_input) = 'Four'

这个表达式在空格上分割复选框组的空格分隔值,然后检查'四'包含在结果序列中。

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

contains('baz foobar', 'foo')

返回true()

答案 1 :(得分:0)

知道了:

SELECT ... FOR UPDATE

......所以在我的情况下:

contains()

...所以只要选中值为Four的复选框,那么对于可见性条件,这将是真的。

相关问题