BUG 8860 DESCRIPTION The bug the error affected the masks of the fields SOLVED
The field with formula not work mask. Add execute event to field.
This commit is contained in:
@@ -7,7 +7,19 @@ var G_Grid = function(oForm, sGridName){
|
||||
this.oGrid = document.getElementById(this.sGridName);
|
||||
this.onaddrow = function(iRow){};
|
||||
this.ondeleterow = function(){};
|
||||
|
||||
this.executeEvent = function (element,event) {
|
||||
if ( document.createEventObject ) {
|
||||
// IE
|
||||
var evt = document.createEventObject();
|
||||
return element.fireEvent('on'+event,evt)
|
||||
} else {
|
||||
// firefox + others
|
||||
var evt = document.createEvent("HTMLEvents");
|
||||
evt.initEvent(event, true, true ); // event type,bubbling,cancelable
|
||||
return !element.dispatchEvent(evt);
|
||||
}
|
||||
}
|
||||
|
||||
this.aFields = [];
|
||||
this.aElements = [];
|
||||
this.aFunctions = [];
|
||||
@@ -868,6 +880,7 @@ var G_Grid = function(oForm, sGridName){
|
||||
this.evaluateFormula = function(oEvent, oDOM, oField) {
|
||||
oDOM = (oDOM ? oDOM : oEvent.target || window.event.srcElement);
|
||||
var aAux, sAux, i, oAux;
|
||||
var domId = oDOM.id;
|
||||
var oContinue = true;
|
||||
aAux = oDOM.name.split('][');
|
||||
sAux = oField.sFormula.replace(/\+|\-|\*|\/|\(|\)|\[|\]|\{|\}|\%|\$/g, ' ');
|
||||
@@ -889,6 +902,7 @@ var G_Grid = function(oForm, sGridName){
|
||||
}
|
||||
}
|
||||
eval("if (!document.getElementById('" + aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + "]')) { oContinue = false; }");
|
||||
|
||||
if (oContinue) {
|
||||
//we're selecting the mask to put in the field with the formula
|
||||
for (i = 0; i < this.aFields.length; i++) {
|
||||
@@ -898,24 +912,52 @@ var G_Grid = function(oForm, sGridName){
|
||||
}
|
||||
if(maskformula!=''){
|
||||
maskDecimal=maskformula.split(";");
|
||||
|
||||
if(maskDecimal.length > 1) {
|
||||
maskDecimal=maskDecimal[1].split(".");
|
||||
} else {
|
||||
maskDecimal=maskformula.split(".");
|
||||
maskDecimal=maskformula.split(".");
|
||||
}
|
||||
maskToPut=maskDecimal[1].length;
|
||||
}else{
|
||||
maskToPut=0;
|
||||
|
||||
if(maskDecimal[1] != undefined) {
|
||||
maskToPut=maskDecimal[1].length;
|
||||
} else {
|
||||
maskToPut=0;
|
||||
}
|
||||
|
||||
} else {
|
||||
maskToPut=0;
|
||||
}
|
||||
var symbol = document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value.replace(/[0-9.\s]/g,'');
|
||||
var bkp = document.getElementById(aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + ']').value;
|
||||
eval("document.getElementById('" + aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + "]').value = (" + sAux + ').toFixed('+maskToPut+');');
|
||||
|
||||
// clean the field and load mask execute event keypress
|
||||
document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value = '';
|
||||
this.executeEvent(document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']'), 'keypress');
|
||||
|
||||
// execute formula and set decimal
|
||||
eval("document.getElementById('" + aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + "]').value = (" + sAux + ').toFixed('+maskToPut+');');
|
||||
|
||||
// trim value
|
||||
document.getElementById(aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + ']').value = document.getElementById(aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + ']').value.replace(/^\s*|\s*$/g,"");
|
||||
|
||||
// set '' to field if response is NaN
|
||||
if (document.getElementById(aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + ']').value =='NaN')
|
||||
document.getElementById(aAux[0] + '][' + aAux[1] + '][' + oField.sFieldName + ']').value = '';
|
||||
|
||||
document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value = symbol+' '+document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value;
|
||||
// save var symbol the response
|
||||
var symbol = document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value.replace(/[0-9.\s]/g,'');
|
||||
this.executeEvent(document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']'), 'keypress');
|
||||
|
||||
// replace symbol - for ''
|
||||
document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value = document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value.replace('-','');
|
||||
|
||||
// set var symbol
|
||||
document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value = symbol+''+document.getElementById(aAux[0]+']['+ aAux[1] + '][' + oField.sFieldName + ']').value;
|
||||
|
||||
// return focus the field typed
|
||||
if (document.getElementById(domId) != undefined) {
|
||||
document.getElementById(domId).focus();
|
||||
}
|
||||
|
||||
if (this.aFunctions.length > 0) {
|
||||
for (i = 0; i < this.aFunctions.length; i++) {
|
||||
oAux = document.getElementById('form[' + this.sGridName + '][' + aAux[1] + '][' + this.aFunctions[i].sFieldName + ']');
|
||||
|
||||
Reference in New Issue
Block a user