0
I need to validate some fields at runtime, so their sum doesn’t exceed 100%. I was able to check if the value to distribute is 0, IE, the guy can not fill any value in the fields in this situation.
0 field that identifies the value "R$100,000,00" is the basis for Textbox, the total of all Textbox cannot exceed 100%, in the case of the image, has already reached 100% because there are 2 fields, each of them consuming 50% of the total.
The topic is to help so that when the guy fills the fields and the total is equal to 100, does not allow to fill any more field, if by chance, the value to distribute is 200 for example and the guy put in one of the fields 500, return error msg until it is corrected.
My Javascript:
function PreencherPorcentagem(campo){
if (campo.value === "") {
return;
}
var porcentagem = 0;
var idCampo = campo.id
var idPadrao = 'ctl00_ContentPlaceHolder1_rpPratifAcis_';//parte do id que sempre se repete na grid
var fields = idCampo.replace(idPadrao,"").split('_');//array para separar segunda parte do id. Ex: ctl03_txtClienteAgro
var idPrincipal = fields[0];//id único do campo
var nomeCampo = fields[1];
var valorCampo = parseFloat(document.getElementById(campo.id).value.replace(".", "").replace(".", "").replace(".", ""));
//Caso entre na function, altera hidden field para true para separar linhas alteradas na hora de validar método de salvar
document.getElementById(idPadrao + idPrincipal + '_hdLinhaAlterada').value = true;
if (idCampo.indexOf('Cliente') != -1) {
var valorClienteSge = 0;
valorClienteSge = parseFloat(document.getElementById(idPadrao + idPrincipal + '_hdClienteSge').value.replace(".", "").replace(".", "").replace(".", ""));
if ((valorClienteSge === 0 && valorCampo === 0) || valorCampo === 0) {
porcentagem = 0;
}
else if (valorClienteSge === 0 && valorCampo !== 0) {
alert("Porcentagem não pode ser maior que 100%.");
document.getElementById(campo.id).value = ""
return;
}
else {
porcentagem = ((valorCampo / valorClienteSge) * 100);
}
}
else if (idCampo.indexOf('Recurso') != -1) {
var valorRecursoSge = 0;
valorRecursoSge = parseFloat(document.getElementById(idPadrao + idPrincipal + '_hdRecursoSge').value.replace(".", "").replace(".", "").replace(".", "").replace(",00", ""));
if ((valorRecursoSge === 0 && valorCampo === 0) || valorCampo === 0) {
porcentagem = 0;
}
else if (valorRecursoSge === 0 && valorCampo !== 0) {
alert("Porcentagem não pode ser maior que 100%.");
document.getElementById(campo.id).value = ""
return;
}
else {
porcentagem = ((valorCampo / valorRecursoSge) * 100);
}
}
//Preenche o campo da porcentagem
porcentagem = (Math.floor(porcentagem * 100) / 100);
document.getElementById(idPadrao + idPrincipal + "_"+ nomeCampo.replace("txt", "txtPorcentagem")).setAttribute("value", porcentagem.toString().replace(".", ",") + "%");
}