From 0da673b9cfe7f73de3999c1630da27ded5399926 Mon Sep 17 00:00:00 2001 From: David Webster Date: Fri, 18 Jan 2013 15:10:44 +0000 Subject: [PATCH] ALF-12630: Validation for numbers with decimal commas. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@45608 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- source/web/scripts/validation.js | 116 ++++++++++++++++--------------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/source/web/scripts/validation.js b/source/web/scripts/validation.js index 0e06dac096..a20bf2d7a5 100644 --- a/source/web/scripts/validation.js +++ b/source/web/scripts/validation.js @@ -59,9 +59,13 @@ function validateNumberRange(control, min, max, message, showMessage) */ function validateIsNumber(control, message, showMessage) { - var result = true; - - if (isNaN(control.value)) + var result = true, + testValue = control.value; + + // Be tolerant of numbers that contain decimal commas and/or use a dot/apostrophe/space as a thousand separator & ignore. + testValue = testValue.toString().replace(/[ '.,]/g, ""); + + if (isNaN(testValue)) { informUser(control, message, showMessage); result = false; @@ -89,7 +93,7 @@ function validateStringLength(control, min, max, message, showMessage) } /** - * Ensures the value of the 'control' matches the 'expression' if 'requiresMatch' is true. + * Ensures the value of the 'control' matches the 'expression' if 'requiresMatch' is true. * Ensures the value of the 'control' does not match the 'expression' if 'requiresMatch' is false. * * @return true if the regex validation passed @@ -201,7 +205,7 @@ function validateValue(control, pattern, message, showMessage) return result; } - + function validateDialog() { if (finishButtonPressed) @@ -235,98 +239,98 @@ function validateWizard() * * @param str The string to decode * @return The decoded string - */ + */ function decode(str) -{ +{ var s0, i, j, s, ss, u, n, f; - - s0 = ""; // decoded str - + + s0 = ""; // decoded str + for (i = 0; i < str.length; i++) { - // scan the source str - s = str.charAt(i); - + // scan the source str + s = str.charAt(i); + if (s == "+") { // "+" should be changed to SP s0 += " "; - } + } else - { + { if (s != "%") { // add an unescaped char s0 += s; - } + } else { - // escape sequence decoding - u = 0; // unicode of the character - - f = 1; // escape flag, zero means end of this sequence - + // escape sequence decoding + u = 0; // unicode of the character + + f = 1; // escape flag, zero means end of this sequence + while (true) - { - ss = ""; // local str to parse as int + { + ss = ""; // local str to parse as int for (j = 0; j < 2; j++ ) { - // get two maximum hex characters for parse - sss = str.charAt(++i); - + // get two maximum hex characters for parse + sss = str.charAt(++i); + if (((sss >= "0") && (sss <= "9")) || ((sss >= "a") && (sss <= "f")) || ((sss >= "A") && (sss <= "F"))) - { - ss += sss; // if hex, add the hex character + { + ss += sss; // if hex, add the hex character } else { // not a hex char., exit the loop --i; break; - } - } + } + } - // parse the hex str as byte - n = parseInt(ss, 16); + // parse the hex str as byte + n = parseInt(ss, 16); - // single byte format - if (n <= 0x7f) { u = n; f = 1; } + // single byte format + if (n <= 0x7f) { u = n; f = 1; } - // double byte format - if ((n >= 0xc0) && (n <= 0xdf)) { u = n & 0x1f; f = 2; } + // double byte format + if ((n >= 0xc0) && (n <= 0xdf)) { u = n & 0x1f; f = 2; } - // triple byte format - if ((n >= 0xe0) && (n <= 0xef)) { u = n & 0x0f; f = 3; } + // triple byte format + if ((n >= 0xe0) && (n <= 0xef)) { u = n & 0x0f; f = 3; } - // quaternary byte format (extended) - if ((n >= 0xf0) && (n <= 0xf7)) { u = n & 0x07; f = 4; } + // quaternary byte format (extended) + if ((n >= 0xf0) && (n <= 0xf7)) { u = n & 0x07; f = 4; } - // not a first, shift and add 6 lower bits - if ((n >= 0x80) && (n <= 0xbf)) { u = (u << 6) + (n & 0x3f); --f; } + // not a first, shift and add 6 lower bits + if ((n >= 0x80) && (n <= 0xbf)) { u = (u << 6) + (n & 0x3f); --f; } + + // end of the utf byte sequence + if (f <= 1) { break; } - // end of the utf byte sequence - if (f <= 1) { break; } - if (str.charAt(i + 1) == "%") { // test for the next shift byte i++ ; - } + } else { // abnormal, format error break; - } - } + } + } - // add the escaped character - s0 += String.fromCharCode(u); - - } - } - } - - return s0; + // add the escaped character + s0 += String.fromCharCode(u); + + } + } + } + + return s0; } /**