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