我的表单中有一个数字输入字段。我只是用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)
答案 0 :(得分:1)
要想做到这一点,这可能很棘手。我建议使用fr:number
控件,它会为你完成所有这些操作。