在表单的顶部,我们有一个单选按钮,它有 3 个选项。每个选项都会让用户记下一组不同的问题。然而,如果用户改变主意并说,从选项 1 切换到选项 2。然后我们要重置除单选按钮之外的所有表单字段。
我尝试过如下语法,它清除了下拉菜单和复选框,但它将文本字段设置为“true”:
<xf:setvalue xxf:iterate="//SubScn2//*[empty(*)]" value="if (//MainCtrl = '1') then 'true' else ."/>
表格示例:https://demo.orbeon.com/demo/fr/orbeon/builder/edit/4d48d3f7be57ecaeecb2d5c14ce2a50cf85f7475
有什么建议吗?
我觉得你的代码很好。如果你想清除所有字段,只需使用
value="if (//MainCtrl = '1') then '' else ."
。如果你想要一些字段除外,那么使xxf:iterate="//SubScn2//*[not(self::SubScn2_C3)]"
中的xPath更具体。
有些喜欢"//SubScn2//*[empty(*) and not(self::SubScn2_C3)]"
。如果您为字段使用好的名称,则该条件看起来更普遍。