From 92a42385034d6c9c553001dc35ae22c7c89b894c Mon Sep 17 00:00:00 2001 From: Koen Reefman Date: Thu, 18 May 2017 09:36:25 +0000 Subject: [PATCH] FSN#40565 berekeningen in flex velden correct beoordelen op input svn path=/Website/trunk/; revision=33911 --- APPL/Shared/kenmerk_js.asp | 78 +++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 31 deletions(-) diff --git a/APPL/Shared/kenmerk_js.asp b/APPL/Shared/kenmerk_js.asp index 59c8ec4eac..9e52707efb 100644 --- a/APPL/Shared/kenmerk_js.asp +++ b/APPL/Shared/kenmerk_js.asp @@ -73,7 +73,6 @@ function checkRequiredGroup(group) var in_use = false; // Semaphore(Seinvlag) om nested loop van de alerts van twee velden met te lange invoer te vermijden. function checkKenmerk(field, show, ktype, klen, kdec, kmin, kmax) - // checkKenmerk(this, false,"N", 7, 2, null, null) { var valid = true; if (!in_use) @@ -107,39 +106,56 @@ function checkKenmerk(field, show, ktype, klen, kdec, kmin, kmax) } else if (ktype == 'N') { - if (kdec) + var arrValue = [value]; + if (value.length > 0 && value.charAt(0) == "=") // check if it is a calculation { - var l1 = klen-kdec; - var l2 = kdec; - // Als een punt én een komma in een getal behouden we alleen de laatste - if (value.lastIndexOf(".") > value.lastIndexOf(",")) - { - value = value.replace(/\,/ig, ""); - field.value = value; - } - if (value.lastIndexOf(",") > value.lastIndexOf(".")) - { - value = value.replace(/\./ig, ""); - field.value = value; - } - var s = '^\\-?(\\d{1,'+l1+'}[.,]?|\\d{0,'+l1+'}[.,]\\d{1,'+l2+'})$'; - valid = value.match(new RegExp(s)) && valid; - if (valid) { var t = parseFloat(value.replace(',','.'));} + if (value == "=" || value.indexOf("@") > 0) // @ voor evt. string manipulatie hierna + valid = false; + else + { + arrValue = value.substring(1).split(/[+\-/*%]/g); + if ($.inArray("", arrValue) != -1) + valid = false; + } + if (!valid) + arrValue = []; } - else + for (var i = 0; i < arrValue.length; i++) { - if (klen == 1 && kmin == 0 && kmax == 1) - { - // Checkbox; waarde in checked is altijd true of false, dus altijd valid. - valid = true; - t = (field.checked?1:0); - } - else - { - var s = '^\\-?\\d{1,'+klen+'}[.,]?$'; - valid = value.match(new RegExp(s)) && valid; - if (valid) { var t = parseInt(value);} - } + if (kdec) + { + var l1 = klen-kdec; + var l2 = kdec; + // Als een punt én een komma in een getal behouden we alleen de laatste + if (arrValue[i].lastIndexOf(".") > arrValue[i].lastIndexOf(",")) + { + value.replace(arrValue[i], arrValue[i].replace(/\,/ig, "")); + field.value = value; + } + if (arrValue[i].lastIndexOf(",") > arrValue[i].lastIndexOf(".")) + { + value.replace(arrValue[i], arrValue[i].replace(/\./ig, "")); + field.value = value; + } + var s = '^\\-?(\\d{1,'+l1+'}[.,]?|\\d{0,'+l1+'}[.,]\\d{1,'+l2+'})$'; + valid = arrValue[i].match(new RegExp(s)) && valid; + if (valid) { var t = parseFloat(arrValue[i].replace(',','.'));} + } + else + { + if (klen == 1 && kmin == 0 && kmax == 1) + { + // Checkbox; waarde in checked is altijd true of false, dus altijd valid. + valid = true; + t = (field.checked?1:0); + } + else + { + var s = '^\\-?\\d{1,'+klen+'}[.,]?$'; + valid = arrValue[i].match(new RegExp(s)) && valid; + if (valid) { var t = parseInt(arrValue[i]);} + } + } } if (valid) {