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" также вместо проверки длины, но позже увидел некоторую ошибку в этой проверке номера, переключенную на эту проверку длины строки) </p>
теперь проблема в этом случае длины строки заключается в том, что если я ввожу «9,999,999,999,999,999,9991», то происходит следующее 1. Проверка ограничения выполнена.который возвращает «ложь» как «9999999999999999,991» = 20 длины 2. сумма валюты округляется.
, поэтому моя проверка ограничений не проходит.Но если я щелкаю поле и щелкаю за пределами поля, проверка ограничений возвращает значение true
. Кто-нибудь может предложить лучший способ сделать это или решить вышеуказанную проблему.