如何使字段只能动态读取,即在xforms-values-changed事件和其他事件上?

时间:2011-08-25 05:52:31

标签: xml readonly xforms orbeon

在更改下拉字段中的值时,我想将字段设为只读。就我的编程知识而言,我们在绑定字段时将字段设置为只读。有没有办法根据事件使字段只读?

1 个答案:

答案 0 :(得分:0)

我建议不需要显式事件处理程序的解决方案:您可以使用两组控件,其中一组设置为只读,另一组设置为可编辑。要在两个集合之间切换,您可以将每个集合放在xforms:group中,并使用ref属性来控制是否显示该组。

以下是引用互斥条件的组的示例。根据{{​​1}}实例节点的值,将显示其中一个组。如果select1的项集比1或0更复杂,则必须调整selectedvalue属性的XPath。

xforms:group@ref

此解决方案的优点是根本不需要事件处理(或者更确切地说,XForms引擎执行事件处理部件本身; <xforms:select1 appearance="minimal" ref="instance('main')/path/to/selectedvalue"> ... </xforms:select1> <xforms:group ref="instance('main')/path/to/selectedvalue eq 1"> <xforms:input ref="instance('main')/path/to/textinput" /> <!-- more editable XForms controls, bound to main instance --> </xforms:group> <xforms:group ref="instance('main')/path/to/selectedvalue eq 0"> <xforms:input ref="instance('read-only')/path/to/textinput" /> <!-- more read-only XForms controls, bound to a read-only instance --> </xforms:group> 在实例值上充当“事件侦听器”他们自己)。也可以将此技术与显式事件处理相结合:使用xforms:groupxforms:action ev:event="xforms-value-changed"属性观察到的节点上发出xforms:setvalue ...