안녕 모두 나는 통화 단위를 테스트하는 단위 였고 버그로 간주 될 수있는이 문제를 발견했습니다.반올림하기 전에 통화 필드 제약 확인 수행
<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 자 총 있습니다. (나는 (= = '') then if (. = '') then true() else number (.) < 10000000000000000 "길이 검사 대신에이 번호 검사의 일부 버그를보고이 문자열 길이 검사로 전환 함)
이제이 문자열 길이의 문제는 입니다. "9,999,999,999,999,999.991"을 입력하면 다음이 발생합니다. 1. 제약 조건 검사가 수행됩니다. "false"를 "9999999999999999.991"= 20 길이 으로 반환합니다. 2. 통화 금액은 반올림됩니다.
내 제약 조건 확인에 실패했습니다. 그러나 필드를 클릭하고 필드 외부를 클릭하면 제약 조건 검사에서 true를 반환합니다.
위의 문제를 해결하는 더 좋은 방법은 누구나 제안 할 수 있습니다.
에 우리가 (제약 = "일치를 사용하여 유효성 검사를 할 수있는 복잡한 방법을 발견 한 평가 '(^ $). | (^ (\ d) {0,16} (\. \ d \ d?)? $) ') "이것은 올바르게 검증 된 것 같습니다. –