2014-09-10 71 views
0

我的表单中有一个数字输入字段。我只是添加一些格式上它与XXF:格式:在我的Xforms表单中使用xxf:format属性的奇怪行为(使用Orbeon Form Runner)

<xf:input 
    id="input-control" 
    bind="input-bind" 
    class="question nombre" 
    xxf:format="if (. castable as xs:integer) 
       then replace(format-number(xs:integer(.),'###,###,###,###,###,###,###,###,###,##0'),',',' ') 
       else ''"> 

这可能看起来有点疯狂,但它只是其中编号123456将作为123 456这对我的作品很大,但不是为用户提供格式... 所以现在,我增加了一个脚本来取消格式化,当输入集中(又名:编辑场时回到123456)用一个简单的JS:

<xf:action ev:event="DOMFocusIn"> 
    <xxf:script> 
    var input = this.getElementsByTagName('input')[0]; 
    var valeur = input.value.replace(' ',''); 
    input.value = valeur; 
    </xxf:script> 
</xf:action> 

行为看起来不错乍一看,我意思是说,我进入了123456,重点出来并得到了123 456(格式正常),重点并获得了123456(脚本行为正常)。但是如果我不在场上做任何改变并集中注意力,我没有格式化(仍然是123456而不是123456)。 据我所知,格式只适用于“需要”和“需要”在这里意味着,当输入的值改变。但是如果我强制执行xforms-value-change事件,我仍然没有格式化。

任何人都有如何实现这个想法?

(任何人都已经明白什么?-s)

回答

1

这可能会非常棘手得到的权利。我会推荐使用fr:number控件,它可以为你做所有这些。

+0

没错。 “它发挥”,因为我们在这里说过;-) 我不知道我是如何错过了,是一个明显的解决方案...谢谢! – 2014-09-23 08:54:46

+0

很高兴工作:) – ebruchez 2014-09-23 23:29:34