HI全部 我是單元測試我的貨幣字段,我發現這個問題可以被視爲一個錯誤。在四捨五入之前完成貨幣字段約束檢查
<xforms:bind id="amount" nodeset="instance('form')/data/amount"
constraint="if(.!='') then number(.) >0 and string-length(.)<20 else ."/>
...
<fr:currency bind="amount" xxforms:maxlength="50" incremental="true">
<xforms:alert>Value should be below $ 9,999,999,999,999,999,999.99</xforms:alert>
</fr:currency>
我試圖在上述情況下,實現爲條件,把一個最大值檢查<「9999999,999999999.99」這19個字符總數。 (我曾嘗試過約束=「if(。='')然後是true()else number(。)< 10000000000000000」而不是長度檢查,但稍後看到該數字檢查中的一些錯誤切換到此字符串長度檢查)
現在在這種情況下字符串長度的問題是 如果我輸入「9,999,999,999,999,999.991」發生以下情況 1.執行約束檢查。它返回'假'爲「9999999999999999.991」= 20長度 2.貨幣金額四捨五入。
所以我的約束檢查失敗。但是,如果我點擊該字段並在字段外單擊,約束檢查返回true
任何人都可以提出一個更好的方法來做到這一點或如何解決上述問題。
我們已經找到一種複雜的方式使用約束=「比賽(做驗證,「(^ $)。| (^(\ d){0,16}(\。\ d \ d?)?$)')「這似乎驗證正確 – 2011-05-13 11:38:37