这种能力似乎在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是迄今为止我唯一能够成功取消的事件,也是许多示例中用来停止特定自动过程的事件。很少有一些例子可以更改默认操作和事件顺序,同时它们会冒泡上下元素。