这种能力似乎到处都在宣传 xforms,但我无法让它发挥作用。似乎 'ev:defaultAction="cancel"' 是要走的路,但我尝试将它放在 xform 控制元素、动作元素和模型元素中。我试图做到这一点,以便当单击 xf:repeat 项目时,而不是索引更改,节点集会更改。所以我认为拦截事件很容易,但我无法弄清楚。
对于测试,我尝试停止整个文档中的所有交互事件。这放置在模型元素内不起作用:
<xf:action ev:event="DOMActivate" ev:defaultAction="cancel"/>
这也不是:
<xf:model id="master" ev:event="DOMActivate" ev:defaultAction="cancel">
这不会阻止索引的重复:
<xf:repeat ... ev:event="DOMActivate" ev:defaultAction="cancel"/>
也不是这个:
<xf:repeat ...>
<script type="text/javascript" ev:event="DOMActivate" ev:defaultAction="cancel"/>
</xf:repeat>
我正在使用 Betterform。这放置在模型元素中不会取消默认操作,甚至根本不会触发。
<xf:action ev:event="betterform-index-changed"
ev:target="repeat" ev:defaultAction="cancel">
这些事件我错过了什么?该规范使它听起来非常直截了当。xforms-recalculate 是迄今为止我能够成功取消的唯一事件,并且它在许多示例中用于停止特定的自动过程。在元素上下冒泡时更改默认操作和事件顺序的一般示例很少。