在更改下拉字段中的值时,我想将字段设为只读。就我的编程知识而言,我们在绑定字段时将字段设置为只读。有没有办法根据事件使字段只读?
答案 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:group
在xforms:action ev:event="xforms-value-changed"
属性观察到的节点上发出xforms:setvalue ...
。