BUG 0000 "Problem with negative character in masks" SOLVED
- Problem with negative character in masks - Solved problem with negative character in masks, if the negative character is not in the same mask is accepted data input by keyboard * Available from version ProcessMaker-2.0.46
This commit is contained in:
@@ -998,9 +998,12 @@ function G_Text(form, element, name)
|
||||
currentSel = dataWOMask.cursor;
|
||||
cursorStart = currentSel.selectionStart;
|
||||
cursorEnd = currentSel.selectionEnd;
|
||||
action = 'mask';
|
||||
swPeriod = false;
|
||||
switch(keyCode){
|
||||
|
||||
var action = "mask";
|
||||
var swPeriod = false;
|
||||
var i = 0;
|
||||
|
||||
switch (keyCode) {
|
||||
case 0:
|
||||
action = 'none';
|
||||
break;
|
||||
@@ -1036,71 +1039,86 @@ function G_Text(form, element, name)
|
||||
action = 'move';
|
||||
break;
|
||||
case 45:
|
||||
if (me.mType == 'currency' || (me.mType == 'text' && (me.validate == 'Real' || me.validate == 'Int'))) {
|
||||
newValue = currentValue.substring(0, currentValue.length).split('');
|
||||
for (var numI = 0; newValue.length > numI; numI++) {
|
||||
var campVal = newValue[numI];
|
||||
if ((typeof(campVal) === 'number' || typeof(campVal) === 'string') && (campVal !== '') && (!isNaN(campVal))) {
|
||||
newValue = currentValue.substring(0, numI-1);
|
||||
newValue += '-' + currentValue.substring(numI);
|
||||
numI = newValue.length + 1;
|
||||
newCursor = cursorStart+1;
|
||||
} else {
|
||||
if (campVal == '-') {
|
||||
newValue = currentValue.substring(0, numI-1);
|
||||
newValue += currentValue.substring(numI+1);
|
||||
newCursor = cursorStart-1;
|
||||
numI = newValue.length + 1;
|
||||
if (me.mType == "currency" || (me.mType == "text" && (me.validate == "Real" || me.validate == "Int"))) {
|
||||
newValue = currentValue.substring(0, currentValue.length).split("");
|
||||
|
||||
if (newValue.length > 0) {
|
||||
for (i = 0; i <= newValue.length - 1; i++) {
|
||||
var campVal = newValue[i];
|
||||
|
||||
if ((typeof campVal == "number" || typeof campVal == "string") && campVal != "" && !isNaN(campVal)) {
|
||||
newValue = currentValue.substring(0, i - 1);
|
||||
newValue = newValue + "-" + currentValue.substring(i);
|
||||
i = newValue.length + 1;
|
||||
newCursor = cursorStart + 1;
|
||||
} else {
|
||||
if (campVal == "-") {
|
||||
newValue = currentValue.substring(0, i - 1);
|
||||
newValue = newValue + currentValue.substring(i + 1);
|
||||
newCursor = cursorStart - 1;
|
||||
i = newValue.length + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (newValue.join) {
|
||||
newValue = newValue.join("");
|
||||
}
|
||||
} else {
|
||||
//default
|
||||
newKey = String.fromCharCode(keyCode);
|
||||
newValue = currentValue.substring(0, cursorStart);
|
||||
newValue = newValue + newKey;
|
||||
newValue = newValue + currentValue.substring(cursorEnd, currentValue.length);
|
||||
newCursor = cursorStart + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (newValue.join) {
|
||||
newValue = newValue.join('');
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
newKey = String.fromCharCode(keyCode);
|
||||
newValue = currentValue.substring(0, cursorStart);
|
||||
newValue += newKey;
|
||||
newValue += currentValue.substring(cursorEnd, currentValue.length);
|
||||
newCursor = cursorStart + 1;
|
||||
break;
|
||||
newKey = String.fromCharCode(keyCode);
|
||||
newValue = currentValue.substring(0, cursorStart);
|
||||
newValue = newValue + newKey;
|
||||
newValue = newValue + currentValue.substring(cursorEnd, currentValue.length);
|
||||
newCursor = cursorStart + 1;
|
||||
break;
|
||||
}
|
||||
if (newCursor < 0) newCursor = 0;
|
||||
|
||||
if (newCursor < 0) {
|
||||
newCursor = 0;
|
||||
}
|
||||
|
||||
if (keyCode != 8 && keyCode != 46 && keyCode != 35 && keyCode != 36 && keyCode != 37 && keyCode != 39){
|
||||
testData = dataWOMask.result;
|
||||
tamData = testData.length;
|
||||
cleanMask = me.getCleanMask();
|
||||
tamMask = cleanMask.length;
|
||||
sw = false;
|
||||
var testData = dataWOMask.result;
|
||||
var tamData = testData.length;
|
||||
var cleanMask = me.getCleanMask();
|
||||
var tamMask = cleanMask.length;
|
||||
var sw = false;
|
||||
|
||||
if (testData.indexOf(me.comma_separator) == -1){
|
||||
aux = cleanMask.split('_');
|
||||
tamMask = aux[0].length;
|
||||
sw = true;
|
||||
}
|
||||
if (tamData >= tamMask){
|
||||
var minusExi;
|
||||
for (var numI = 0; newValue.length > numI; numI++) {
|
||||
var campVal = newValue[numI];
|
||||
if ((typeof(campVal) === 'number' || typeof(campVal) === 'string') && (campVal !== '') && (!isNaN(campVal))) {
|
||||
minusExi = false;
|
||||
} else {
|
||||
if (campVal == '-') {
|
||||
minusExi = true;
|
||||
numI = newValue.length + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!(keyCode == 45 || (minusExi && tamMask >= tamData))) {
|
||||
if (sw && !swPeriod && testData.indexOf(me.comma_separator) == -1){
|
||||
action = 'none';
|
||||
if (tamData >= tamMask) {
|
||||
var swMinus = false;
|
||||
|
||||
if (/^.*\-.*$/.test(newValue)) {
|
||||
swMinus = true;
|
||||
}
|
||||
|
||||
if (!(keyCode == 45 || (swMinus && tamMask >= tamData))) {
|
||||
if (sw && !swPeriod){
|
||||
action = "none";
|
||||
}
|
||||
|
||||
if (!sw) {
|
||||
action = "none";
|
||||
}
|
||||
}
|
||||
if (!sw) action = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch(action){
|
||||
case 'mask': case 'move':
|
||||
dataNewMask = me.replaceMasks(newValue, newCursor);
|
||||
@@ -1913,14 +1931,26 @@ function G()
|
||||
|
||||
//Apply a mask to a number
|
||||
this.ApplyMask = function(num, mask, cursor, dir, comma_sep){
|
||||
myOut = '';
|
||||
myCursor = cursor;
|
||||
if (num.length == 0) return {result: '', cursor: 0};
|
||||
switch(dir){
|
||||
var myOut = "";
|
||||
var myCursor = cursor;
|
||||
var key = "";
|
||||
|
||||
if (num.length == 0) {
|
||||
return {result: "", cursor: 0};
|
||||
}
|
||||
|
||||
switch (dir) {
|
||||
case 'forward':
|
||||
iMask = mask.split('');
|
||||
value = _getOnlyNumbers(num,'');
|
||||
iNum = value.split('');
|
||||
iMask = mask.split("");
|
||||
value = _getOnlyNumbers(num, "");
|
||||
iNum = value.split("");
|
||||
|
||||
var swMinus = (iNum.length > 0 && iNum[0] == "-")? 1 : 0;
|
||||
|
||||
if (swMinus == 1) {
|
||||
key = iNum.shift();
|
||||
}
|
||||
|
||||
for(e=0; e < iMask.length && iNum.length > 0; e++){
|
||||
switch(iMask[e]){
|
||||
case '#': case '0': case 'd': case 'm': case 'y': case 'Y':
|
||||
@@ -1935,6 +1965,10 @@ function G()
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (swMinus == 1) {
|
||||
myOut = "-" + myOut;
|
||||
}
|
||||
break;
|
||||
case 'reverse':
|
||||
var __DECIMAL_SEP = comma_sep;
|
||||
@@ -2072,6 +2106,8 @@ function G()
|
||||
}
|
||||
}
|
||||
else if(cursor == num.length){
|
||||
var last = 0;
|
||||
|
||||
for(l=0; l < aOut.length; l++){
|
||||
switch(aOut[l]){
|
||||
case '0': case '1': case '2': case '3': case '4':
|
||||
|
||||
@@ -1003,16 +1003,17 @@ minIndex=0;minValue=aResults[0].result;if(aResults.length>1){for(i=1;i<aResults.
|
||||
return aResults[minIndex];};this.getCleanMask=function(){aMask=me.mask.split('');maskOut='';for(i=0;i<aMask.length;i++){if(me.mType=='currency'||me.mType=='percentage'||(me.mType=='text'&&me.validate=='Real')){switch(aMask[i]){case'0':case'#':maskOut+=aMask[i];break;case me.comma_separator:maskOut+='_';break;}}
|
||||
else{switch(aMask[i]){case'0':case'#':case'd':case'm':case'y':case'Y':maskOut+=aMask[i];break;}}}
|
||||
return maskOut;}
|
||||
this.applyMask=function(keyCode){if(me.mask!=''){dataWOMask=me.removeMask();currentValue=dataWOMask.result;currentSel=dataWOMask.cursor;cursorStart=currentSel.selectionStart;cursorEnd=currentSel.selectionEnd;action='mask';swPeriod=false;switch(keyCode){case 0:action='none';break;case 8:newValue=currentValue.substring(0,cursorStart-1);newValue+=currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart-1;break;case 46:newValue=currentValue.substring(0,cursorStart);newValue+=currentValue.substring(cursorEnd+1,currentValue.length);newCursor=cursorStart;break;case 256:case 44:swPeriod=true;newValue=currentValue.substring(0,cursorStart);if(keyCode==256)
|
||||
this.applyMask=function(keyCode){if(me.mask!=''){dataWOMask=me.removeMask();currentValue=dataWOMask.result;currentSel=dataWOMask.cursor;cursorStart=currentSel.selectionStart;cursorEnd=currentSel.selectionEnd;var action="mask";var swPeriod=false;var i=0;switch(keyCode){case 0:action='none';break;case 8:newValue=currentValue.substring(0,cursorStart-1);newValue+=currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart-1;break;case 46:newValue=currentValue.substring(0,cursorStart);newValue+=currentValue.substring(cursorEnd+1,currentValue.length);newCursor=cursorStart;break;case 256:case 44:swPeriod=true;newValue=currentValue.substring(0,cursorStart);if(keyCode==256)
|
||||
newValue+='.';else
|
||||
newValue+=',';newValue+=currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart+1;break;case 35:case 36:case 37:case 38:case 39:case 40:newValue=currentValue;switch(keyCode){case 36:newCursor=0;break;case 35:newCursor=currentValue.length;break;case 37:newCursor=cursorStart-1;break;case 39:newCursor=cursorStart+1;break;}
|
||||
action='move';break;case 45:if(me.mType=='currency'||(me.mType=='text'&&(me.validate=='Real'||me.validate=='Int'))){newValue=currentValue.substring(0,currentValue.length).split('');for(var numI=0;newValue.length>numI;numI++){var campVal=newValue[numI];if((typeof(campVal)==='number'||typeof(campVal)==='string')&&(campVal!=='')&&(!isNaN(campVal))){newValue=currentValue.substring(0,numI-1);newValue+='-'+currentValue.substring(numI);numI=newValue.length+1;newCursor=cursorStart+1;}else{if(campVal=='-'){newValue=currentValue.substring(0,numI-1);newValue+=currentValue.substring(numI+1);newCursor=cursorStart-1;numI=newValue.length+1;}}}
|
||||
if(newValue.join){newValue=newValue.join('');}}
|
||||
break;default:newKey=String.fromCharCode(keyCode);newValue=currentValue.substring(0,cursorStart);newValue+=newKey;newValue+=currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart+1;break;}
|
||||
if(newCursor<0)newCursor=0;if(keyCode!=8&&keyCode!=46&&keyCode!=35&&keyCode!=36&&keyCode!=37&&keyCode!=39){testData=dataWOMask.result;tamData=testData.length;cleanMask=me.getCleanMask();tamMask=cleanMask.length;sw=false;if(testData.indexOf(me.comma_separator)==-1){aux=cleanMask.split('_');tamMask=aux[0].length;sw=true;}
|
||||
if(tamData>=tamMask){var minusExi;for(var numI=0;newValue.length>numI;numI++){var campVal=newValue[numI];if((typeof(campVal)==='number'||typeof(campVal)==='string')&&(campVal!=='')&&(!isNaN(campVal))){minusExi=false;}else{if(campVal=='-'){minusExi=true;numI=newValue.length+1;}}}
|
||||
if(!(keyCode==45||(minusExi&&tamMask>=tamData))){if(sw&&!swPeriod&&testData.indexOf(me.comma_separator)==-1){action='none';}
|
||||
if(!sw)action='none';}}}
|
||||
action='move';break;case 45:if(me.mType=="currency"||(me.mType=="text"&&(me.validate=="Real"||me.validate=="Int"))){newValue=currentValue.substring(0,currentValue.length).split("");if(newValue.length>0){for(i=0;i<=newValue.length-1;i++){var campVal=newValue[i];if((typeof campVal=="number"||typeof campVal=="string")&&campVal!=""&&!isNaN(campVal)){newValue=currentValue.substring(0,i-1);newValue=newValue+"-"+currentValue.substring(i);i=newValue.length+1;newCursor=cursorStart+1;}else{if(campVal=="-"){newValue=currentValue.substring(0,i-1);newValue=newValue+currentValue.substring(i+1);newCursor=cursorStart-1;i=newValue.length+1;}}}
|
||||
if(newValue.join){newValue=newValue.join("");}}else{newKey=String.fromCharCode(keyCode);newValue=currentValue.substring(0,cursorStart);newValue=newValue+newKey;newValue=newValue+currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart+1;}}
|
||||
break;default:newKey=String.fromCharCode(keyCode);newValue=currentValue.substring(0,cursorStart);newValue=newValue+newKey;newValue=newValue+currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart+1;break;}
|
||||
if(newCursor<0){newCursor=0;}
|
||||
if(keyCode!=8&&keyCode!=46&&keyCode!=35&&keyCode!=36&&keyCode!=37&&keyCode!=39){var testData=dataWOMask.result;var tamData=testData.length;var cleanMask=me.getCleanMask();var tamMask=cleanMask.length;var sw=false;if(testData.indexOf(me.comma_separator)==-1){aux=cleanMask.split('_');tamMask=aux[0].length;sw=true;}
|
||||
if(tamData>=tamMask){var swMinus=false;if(/^.*\-.*$/.test(newValue)){swMinus=true;}
|
||||
if(!(keyCode==45||(swMinus&&tamMask>=tamData))){if(sw&&!swPeriod){action="none";}
|
||||
if(!sw){action="none";}}}}
|
||||
switch(action){case'mask':case'move':dataNewMask=me.replaceMasks(newValue,newCursor);me.element.value=dataNewMask.result;me.setSelectionRange(dataNewMask.cursor,dataNewMask.cursor);break;}}
|
||||
else{currentValue=me.element.value;currentSel=me.getCursorPosition();cursorStart=currentSel.selectionStart;cursorEnd=currentSel.selectionEnd;switch(keyCode){case 8:newValue=currentValue.substring(0,cursorStart-1);newValue+=currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart-1;break;case 45:case 46:if(me.validate!="Email"){newValue=currentValue.substring(0,cursorStart);newValue+=currentValue.substring(cursorEnd+1,currentValue.length);newCursor=cursorStart;}else{newKey=String.fromCharCode(keyCode);newValue=currentValue.substring(0,cursorStart);newValue+=newKey;newValue+=currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart+1;}
|
||||
break;case 256:newValue=currentValue.substring(0,cursorStart);newValue+='.';newValue+=currentValue.substring(cursorEnd,currentValue.length);newCursor=cursorStart+1;break;case 35:case 36:case 37:case 38:case 39:case 40:newValue=currentValue;switch(keyCode){case 36:newCursor=0;break;case 35:newCursor=currentValue.length;break;case 37:newCursor=cursorStart-1;break;case 39:newCursor=cursorStart+1;break;}
|
||||
@@ -1105,8 +1106,11 @@ function _getOnlyMask(mask,_DEC){var _mask='';_aMask=mask.split('');for(var d=0;
|
||||
return _mask;}
|
||||
function _checkNumber(num,mask){var __DECIMAL_SEP='.';var aNum=_getOnlyNumbers(num,__DECIMAL_SEP);var _outM=aNum;var aMask=_getOnlyMask(mask,__DECIMAL_SEP);if(aMask.indexOf(__DECIMAL_SEP+'0')>0){eMask=aMask.replace(__DECIMAL_SEP,'');eNum=aNum.replace(__DECIMAL_SEP,'');if(eNum.length>eMask.length){_outM=aNum.substring(0,eMask.length+1);}}else{if(aMask.indexOf(__DECIMAL_SEP)>0){iMask=aMask.split(__DECIMAL_SEP);if(aNum.indexOf(__DECIMAL_SEP)>0){iNum=aNum.split(__DECIMAL_SEP);if(iNum[1].length>iMask[1].length){_outM=iNum[0]+__DECIMAL_SEP+iNum[1].substr(0,iMask[1].length);}else{if(iNum[0].length>iMask[0].length){_outM=iNum[0].substr(0,iMask[0].length)+__DECIMAL_SEP+iNum[1];}}}else{if(aNum.length>iMask[0].length){_outM=aNum.substr(0,iMask[0].length);}}}else{if(aNum.indexOf(__DECIMAL_SEP)>0){iNum=aNum.split(__DECIMAL_SEP);if(iNum[0].length>aMask.length){_outM=iNum[0].substr(0,aMask.length);}}else{if(aNum.length>aMask.length){_outM=aNum.substr(0,aMask.length);}}}}
|
||||
return _outM;}
|
||||
this.ApplyMask=function(num,mask,cursor,dir,comma_sep){myOut='';myCursor=cursor;if(num.length==0)return{result:'',cursor:0};switch(dir){case'forward':iMask=mask.split('');value=_getOnlyNumbers(num,'');iNum=value.split('');for(e=0;e<iMask.length&&iNum.length>0;e++){switch(iMask[e]){case'#':case'0':case'd':case'm':case'y':case'Y':if(iNum.length>0){key=iNum.shift();myOut+=key;}
|
||||
this.ApplyMask=function(num,mask,cursor,dir,comma_sep){var myOut="";var myCursor=cursor;var key="";if(num.length==0){return{result:"",cursor:0};}
|
||||
switch(dir){case'forward':iMask=mask.split("");value=_getOnlyNumbers(num,"");iNum=value.split("");var swMinus=(iNum.length>0&&iNum[0]=="-")?1:0;if(swMinus==1){key=iNum.shift();}
|
||||
for(e=0;e<iMask.length&&iNum.length>0;e++){switch(iMask[e]){case'#':case'0':case'd':case'm':case'y':case'Y':if(iNum.length>0){key=iNum.shift();myOut+=key;}
|
||||
break;default:myOut+=iMask[e];if(e<myCursor)myCursor++;break;}}
|
||||
if(swMinus==1){myOut="-"+myOut;}
|
||||
break;case'reverse':var __DECIMAL_SEP=comma_sep;var osize=num.length;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){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':if(eNum.length>0){key=eNum.shift();_cout+=key;}
|
||||
break;case'.':case',':if(eMask[e]!=__DECIMAL_SEP){if(eNum.length>0){_cout+=eMask[e];}}else{_cout+=eMask[e];}
|
||||
break;default:_cout+=eMask[e];break;}}
|
||||
@@ -1122,7 +1126,7 @@ _cout+=pMask[p];}}
|
||||
if(pNum.length>0&&pNum[0]=='-'){key=pNum.shift();_cout+=key;}
|
||||
if(sw_c&&sw_d){myOut=_dout+__DECIMAL_SEP+_cout;}else{myOut=_dout+_cout;}}
|
||||
myOut=invertir(myOut);tmpCursor=0;aOut=myOut.split('');if(cursor==0){for(l=0;l<aOut.length;l++){switch(aOut[l]){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':case __DECIMAL_SEP:myCursor=l;l=aOut.length;break;}}}
|
||||
else if(cursor==num.length){for(l=0;l<aOut.length;l++){switch(aOut[l]){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':case __DECIMAL_SEP:last=l;break;}}
|
||||
else if(cursor==num.length){var last=0;for(l=0;l<aOut.length;l++){switch(aOut[l]){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':case __DECIMAL_SEP:last=l;break;}}
|
||||
myCursor=last+1;}
|
||||
else{aNum=num.split('');offset=0;aNewNum=myOut.split('');for(a=0;a<cursor;a++){notFinded=false;while(aNum[a]!=aNewNum[a+offset]&&!notFinded){offset++;if(a+offset>aNewNum.length){offset=-1;notFinded=true;}}}
|
||||
myCursor=cursor+offset;}
|
||||
|
||||
Reference in New Issue
Block a user