我的Xforms表单中使用xxf:format属性的奇怪行为(使用Orbeon Form Runner)

时间:2014-09-10 16:09:50

标签: orbeon xforms

我的表单中有一个数字输入字段。我只是用xxf:format:

添加一些格式
<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而不是123 456)。 我知道格式只适用于&#34;需要&#34;和#34;需要&#34;这意味着,当输入的值发生变化时。但是,如果我强制进行xforms-value-change事件,我仍然没有格式化。

任何人都知道如何实现这个目标?

(任何人都明白了什么?: - s)

1 个答案:

答案 0 :(得分:1)

要想做到这一点,这可能很棘手。我建议使用fr:number控件,它会为你完成所有这些操作。