BUG 10275 Problemas en campos currency con las mascaras SOLVED

- not validated the mask.
- was add validated for fields currency and percentage.
This commit is contained in:
Marco Antonio Nina
2013-01-08 13:24:02 -04:00
parent 6b3239ecab
commit b328ea14b7
2 changed files with 106 additions and 16 deletions

View File

@@ -101,6 +101,7 @@ SELECT XMLNODE_NAME, TYPE FROM dynaForm WHERE XMLNODE_NAME = @@PME_XMLNODE_NAME
var fieldForm="currency";
var fieldName=getField("PME_XMLNODE_NAME",fieldForm);
var fieldVal=getField("PME_VALIDATE",fieldForm);
var fieldSeparator=getField("PME_COMMA_SEPARATOR",fieldForm);
var fieldMask=getField("PME_MASK",fieldForm);
var savedFieldName=fieldName.value;
var pme_validating;
@@ -108,6 +109,7 @@ fieldName.focus();
fieldName.select();
leimnud.event.add(fieldName, 'change', {method:dynaformVerifyFieldName, instance:fieldName, event:true});
leimnud.event.add(fieldVal, 'change', {method:checkVal, instance:fieldVal, event:true});
leimnud.event.add(fieldSeparator, 'change', {method:checkSeparator, instance:fieldSeparator, event:true});
leimnud.event.add(fieldMask, 'change', {method:checkVal, instance:fieldMask, event:true});
function verifyFieldName(){
pme_validating=true;
@@ -126,21 +128,67 @@ function cancel(){
currentPopupWindow.remove();
}
function replaceAll( text, search, change ) {
while (text.toString().indexOf(search) != -1) {
text = text.toString().replace(search,change);
}
return text;
}
function checkSeparator() {
var separatorOld;
var separatorNew;
switch (fieldSeparator.value) {
case '.':
separatorOld = ',';
separatorNew = '.';
break;
case ',':
separatorOld = '.';
separatorNew = ',';
break;
default:
separatorOld = ',';
separatorNew = '.';
break;
}
var mask = fieldMask.value;
if (fieldVal.value !== 'Int'){
var amount = fieldMask.value.length;
var separator = mask.substring(amount-3, amount-2);
mask = mask.substring(0, amount-3);
}
mask = replaceAll(mask , separatorNew, separatorOld);
if (fieldVal.value !== 'Int'){
mask = mask.concat(separatorNew, '##');
}
fieldMask.value = mask;
}
function checkVal(){
if (fieldVal.value === 'Int'){
aux = fieldMask.value;
aux = aux.replace('.000','');
aux = aux.replace('.00','');
aux = aux.replace('.0','');
aux = aux.replace('.##','');
aux = aux.replace('.#','');
aux = aux.replace('.','');
var amount = fieldMask.value.length;
var sw = 0;
var i = 0;
while (sw == 0) {
if(aux.charAt(amount - i - 1) == ',' || aux.charAt(amount - i - 1) == '.') {
sw = 1;
} else {
i++;
}
}
if (i <= 2) {
aux = aux.substring(0, amount - i - 1);
}
fieldMask.value = aux;
}
if (fieldVal.value === 'Real'){
fieldMask.value = fieldMask.value+'.##';
}
checkSeparator();
}
]]></PME_JS>
</dynaForm>
</dynaForm>

View File

@@ -108,6 +108,7 @@ SELECT XMLNODE_NAME, TYPE FROM dynaForm WHERE XMLNODE_NAME = @@PME_XMLNODE_NAME
var fieldName=getField("PME_XMLNODE_NAME",fieldForm);
var fieldVal=getField("PME_VALIDATE",fieldForm);
var fieldMask=getField("PME_MASK",fieldForm);
var fieldSeparator=getField("PME_COMMA_SEPARATOR",fieldForm);
var savedFieldName=fieldName.value;
var pme_validating;
fieldName.focus();
@@ -115,6 +116,7 @@ SELECT XMLNODE_NAME, TYPE FROM dynaForm WHERE XMLNODE_NAME = @@PME_XMLNODE_NAME
leimnud.event.add(fieldName, 'change', {method:dynaformVerifyFieldName, instance:fieldName, event:true});
leimnud.event.add(fieldVal, 'change', {method:checkVal, instance:fieldVal, event:true});
leimnud.event.add(fieldMask, 'change', {method:checkVal, instance:fieldMask, event:true});
leimnud.event.add(fieldSeparator, 'change', {method:checkSeparator, instance:fieldSeparator, event:true});
var dyntype="@#PME_DYN_TYPE";
@@ -128,18 +130,58 @@ function cancel(){
currentPopupWindow.remove();
}
function checkSeparator() {
aux = fieldMask.value;
var separatorOld;
var separatorNew;
switch (fieldSeparator.value) {
case '.':
separatorOld = ',';
separatorNew = '.';
break;
case ',':
separatorOld = '.';
separatorNew = ',';
break;
default:
separatorOld = ',';
separatorNew = '.';
break;
}
aux = aux.replace(separatorOld, separatorNew);
fieldMask.value = aux;
}
function checkVal(){
if (fieldVal.value === 'Int'){
aux = fieldMask.value;
aux = aux.replace('.000','');
aux = aux.replace('.00','');
aux = aux.replace('.0','');
aux = aux.replace('.##','');
aux = aux.replace('.#','');
aux = aux.replace('.','');
var amount = fieldMask.value.length;
var sw = 0;
var i = 0;
decimal = ' %';
while (sw == 0 && i < amount) {
if(aux.charAt(amount - i - 1) == ',' || aux.charAt(amount - i - 1) == '.') {
sw = 1;
} else {
i++;
}
}
if (sw == 1) {
decimal = aux.substring(amount - i, amount);
aux = aux.substring(0, amount - i - 1);
aux = aux.concat(' %');
}
if (fieldVal.value === 'Real'){
var index = aux.indexOf(' ');
aux = aux.substring(0, index);
if (decimal != ' %') {
aux = aux.concat(fieldSeparator.value, decimal);
} else {
aux = aux.concat(fieldSeparator.value,'##',' %');
}
}
fieldMask.value = aux;
}
}
]]></PME_JS>
</dynaForm>
</dynaForm>