BUG 6284 Changing mask validator direction for text fields.

This commit is contained in:
Enrique Ponce De Leon
2011-04-12 16:09:55 -04:00
parent 729cc04733
commit bf6f76c366

View File

@@ -303,14 +303,19 @@ function G_DropDown( form, element, name )
} }
G_DropDown.prototype=new G_Field(); G_DropDown.prototype=new G_Field();
function G_Text( form, element, name ) function G_Text( form, element, name, type )
{ {
var me=this; var me=this;
var mType = 'text';
this.parent = G_Field; this.parent = G_Field;
this.parent( form, element, name ); this.parent( form, element, name );
if (element) { if (element) {
this.prev = element.value; this.prev = element.value;
} }
if (type){
//alert('Type: ' + type);
mType = type;
}
this.validate = 'Any'; this.validate = 'Any';
this.mask=''; this.mask='';
this.required=false; this.required=false;
@@ -458,7 +463,11 @@ function G_Text( form, element, name )
startPos++; startPos++;
var newValue2; var newValue2;
newValue2 = G.toMask(newValue, me.mask, startPos); if (mType !== 'text'){
newValue2 = G.toMask(newValue, me.mask, startPos);
}else{
newValue2 = G.toMask(newValue, me.mask, startPos, 'normal');
}
me.element.value = newValue2.result; me.element.value = newValue2.result;
me.setSelectionRange(newValue2.cursor, newValue2.cursor); me.setSelectionRange(newValue2.cursor, newValue2.cursor);
@@ -782,7 +791,7 @@ function G_Percentage( form, element, name )
{ {
var me=this; var me=this;
this.parent = G_Text; this.parent = G_Text;
this.parent( form, element, name ); this.parent( form, element, name, 'percentage');
this.validate = 'Int'; this.validate = 'Int';
this.mask= '###.##'; this.mask= '###.##';
} }
@@ -792,7 +801,7 @@ function G_Currency( form, element, name )
{ {
var me=this; var me=this;
this.parent = G_Text; this.parent = G_Text;
this.parent( form, element, name ); this.parent( form, element, name, 'currency');
this.validate = 'Int'; this.validate = 'Int';
this.mask= '_###,###,###,###,###;###,###,###,###,###.00'; this.mask= '_###,###,###,###,###;###,###,###,###,###.00';
} }
@@ -1102,22 +1111,46 @@ function G()
} }
//Apply a mask to a number //Apply a mask to a number
function _ApplyMask(num, mask, cursor){ function _ApplyMask(num, mask, cursor, dir){
var __DECIMAL_SEP = '.'; if (dir){
var osize = num.length; var osize = num.length;
num = _checkNumber(num, mask); _out = '';
num = _getOnlyNumbers(num,__DECIMAL_SEP); num = _checkNumber(num, mask);
if (num.length == 0) return {result: '', cursor: 0}; num = _getOnlyNumbers(num,'');
var iNum = invertir(num); if (num.length == 0) return {result: '', cursor: 0};
var iMask = invertir(mask); iNum = num;
if (iMask.indexOf('0'+__DECIMAL_SEP)> 0){ //Mask has .0 and will applied complete iMask = mask;
aMask = iMask; eMask = iMask.split('');
iNum = _getOnlyNumbers(iNum,'*'); eNum = iNum.split('');
aNum = iNum;
eMask = aMask.split('');
eNum = aNum.split('');
_cout = '';
for (e=0; e < eMask.length; e++){ for (e=0; e < eMask.length; e++){
switch(eMask[e]){
case '#': case '0':
if (eNum.length > 0){
key = eNum.shift();
_out += key;
}
break;
default:
_out += eMask[e];
break;
}
}
}else{
var __DECIMAL_SEP = '.';
var osize = num.length;
num = _checkNumber(num, mask);
num = _getOnlyNumbers(num,__DECIMAL_SEP);
if (num.length == 0) return {result: '', cursor: 0};
var iNum = invertir(num);
var iMask = invertir(mask);
if (iMask.indexOf('0'+__DECIMAL_SEP)> 0){ //Mask has .0 and will applied complete
aMask = iMask;
iNum = _getOnlyNumbers(iNum,'*');
aNum = iNum;
eMask = aMask.split('');
eNum = aNum.split('');
_cout = '';
for (e=0; e < eMask.length; e++){
switch(eMask[e]){ switch(eMask[e]){
case '#': case '0': case 'd': case 'm': case 'y': case '#': case '0': case 'd': case 'm': case 'y':
if (eNum.length > 0){ if (eNum.length > 0){
@@ -1136,86 +1169,87 @@ function G()
break; break;
default: default:
_cout += eMask[e]; _cout += eMask[e];
break; break;
} }
} }
_out = _cout; _out = _cout;
}else{ }else{
sw_d = false; sw_d = false;
aMask = iMask.split(__DECIMAL_SEP); aMask = iMask.split(__DECIMAL_SEP);
aNum = iNum.split(__DECIMAL_SEP); aNum = iNum.split(__DECIMAL_SEP);
if (aMask.length==1){ if (aMask.length==1){
dMask = ''; dMask = '';
cMask = aMask[0]; cMask = aMask[0];
}else{ }else{
dMask = aMask[0]; dMask = aMask[0];
cMask = aMask[1]; cMask = aMask[1];
} }
if (aNum.length == 1){ if (aNum.length == 1){
dNum = ''; dNum = '';
cNum = aNum[0]; cNum = aNum[0];
}else{ }else{
sw_d = true; sw_d = true;
dNum = aNum[0]; dNum = aNum[0];
cNum = aNum[1]; cNum = aNum[1];
} }
_dout = ''; _dout = '';
pMask = dMask.split(''); pMask = dMask.split('');
pNum = dNum.split(''); pNum = dNum.split('');
for (p=0; p < pMask.length; p++){ for (p=0; p < pMask.length; p++){
switch(pMask[p]){ switch(pMask[p]){
case '#': case '0': case '#': case '0':
if (pNum.length > 0){ if (pNum.length > 0){
key = pNum.shift(); key = pNum.shift();
_dout += key; _dout += key;
} }
break; break;
case ',': case '.': case ',': case '.':
if (pMask[p] != __DECIMAL_SEP){ if (pMask[p] != __DECIMAL_SEP){
if (pNum.length > 0){ if (pNum.length > 0){
_dout += pMask[p]; _dout += pMask[p];
} }
}else{ }else{
} }
break; break;
default: default:
_dout += pMask[p]; _dout += pMask[p];
break;
}
}
_cout = '';
sw_c = false;
pMask = cMask.split('');
pNum = cNum.split('');
for (p=0; p < pMask.length; p++){
switch(pMask[p]){
case '#': case '0': case 'd': case 'm': case 'y':
if (pNum.length > 0){
key = pNum.shift();
_cout += key;
sw_c = true;
}
break; break;
case ',': case '.': }
if (pMask[p] != __DECIMAL_SEP){ }
if (pNum.length > 0){ _cout = '';
_cout += pMask[p]; sw_c = false;
} pMask = cMask.split('');
} pNum = cNum.split('');
break; for (p=0; p < pMask.length; p++){
default: switch(pMask[p]){
_cout += pMask[p]; case '#': case '0': case 'd': case 'm': case 'y':
if (pNum.length > 0){
key = pNum.shift();
_cout += key;
sw_c = true;
}
break;
case ',': case '.':
if (pMask[p] != __DECIMAL_SEP){
if (pNum.length > 0){
_cout += pMask[p];
}
}
break;
default:
_cout += pMask[p];
}
}
if (sw_c && sw_d){
_out = _dout + __DECIMAL_SEP + _cout;
}else{
_out = _dout + _cout;
} }
} }
if (sw_c && sw_d){ _out = invertir(_out);
_out = _dout + __DECIMAL_SEP + _cout;
}else{
_out = _dout + _cout;
}
} }
_out = invertir(_out);
if (_out.length > osize){ if (_out.length > osize){
cursor = cursor + (_out.length - osize); cursor = cursor + (_out.length - osize);
} }
@@ -1226,7 +1260,7 @@ function G()
} }
//Manage Multiple Mask and Integer/Real Number restrictions //Manage Multiple Mask and Integer/Real Number restrictions
this.toMask = function(num, mask, cursor){ this.toMask = function(num, mask, cursor, direction){
if (mask==='') return { if (mask==='') return {
'result': new String(num), 'result': new String(num),
'cursor': cursor 'cursor': cursor
@@ -1235,7 +1269,7 @@ function G()
var result = []; var result = [];
var subMasks=mask.split(';'); var subMasks=mask.split(';');
for(var r=0; r<subMasks.length; r++) { for(var r=0; r<subMasks.length; r++) {
result[r]=_ApplyMask(num, subMasks[r], cursor); result[r]=_ApplyMask(num, subMasks[r], cursor, direction);
} }
var betterResult=0; var betterResult=0;
for(r=1; r<subMasks.length; r++) { for(r=1; r<subMasks.length; r++) {