Calculating with JavaScript

1

I need some help from you.

I have two numeric fields in my system as shown in the picture below.

Thefieldthathasaredlinearoundit,itwillhavetomakeacalculationonthefieldabove,asyoucanseeintheCreatinine...fieldwithavalueof2.3,thefieldinredwouldonlyacceptthatvalueof2.3+0.3incaseitwouldbe2.6up.

Inshort,thefieldinredwouldacceptonlythevaluesfromthetopfieldplus0.3,asanexamplewouldbe2.6formore,couldnotacceptvaluesbelowthat

I'llpostmycodethatItriedtodohere:

function formulaCreabas2() {
        var valueCreabas2 = $('[name="creabas2"]').val();
        var valueCrebas = $('[name="creabas"]').val();
    
        var subCreab = valueCrebas - valueCreabas2
        console.log(subCreab);
        if (subCreab < 0.2999999999999997) {
            $('#creabas2-msg').removeClass('display-none');
            $('#creabas2-msg').text('Não há como comprovar a informação. Dúvidas: entre em contato com a equipe do estudo.');
            $('[name = "creabas2"]').val('');
        } else {
            $('#creabas2-msg').addClass('display-none');
        }
    }
<div class="row">
                                <div class="form-group topo">
                                    <div class="col-md-4">
                                        <label>
                                            Creatinina (posterior à admissão hospitalar e a mais próxima da randomização): <span style="color:red;">*</span>
                                        </label>
                                    </div>
                                    <div class="col-md-3 target">
                                        <div style="width: 180px;" class="input-group">
                                            <input type="text" class="form-control" placeholder="00.00" value="creabas" name="creabas" min="0" max="15" />
                                            <div style="background: #E0E1E2;" class="input-group-addon">mg/dL</div>
                                        </div>
                                    </div>
                                    <div class="col-md-3">
                                        <label id="creabas-error" class="input-error" for="creabas" style="border: none; color: red;"></label>
                                    </div>
                                </div>
                            </div>
<div class="row" id="creba2nd">
                                <div class="form-group topo">
                                    <div class="col-md-4">
                                        <label>
                                            Se necessário, informe mais uma medida da creatinina nas 48 horas prévias a randomização, que comprove a elevação de 0,3mg/dL ou incremento de 50% no valor basal: <span style="color:red;">*</span>
                                        </label>
                                    </div>
                                    <div class="col-md-3 exibeEsconde">
                                        <div style="width: 180px;" class="input-group">
                                            <input type="text" class="form-control " placeholder="00.00" value="creabas2" name="creabas2" min="0" max="15" />
                                            <div style="background: #E0E1E2;" class="input-group-addon">mg/dl</div>
                                        </div>
                                    </div>
                                    <div class="col-md-3">
                                        <label id="creabas2-error" class="input-error" for="creabas2" style="border: none; color: red;"></label>
                                        <label id="creabas2-msg" class="text-danger display-none" for="creabas2"></label>
                                    </div>
                                </div>
                            </div>

creabas is the variable of the first field, Creatinine ...

creabas2 is the field variable If necessary ...

    
asked by anonymous 24.10.2017 / 12:43

3 answers

0
function formulaCreabas2() {
    var valueCreabas2 = parseFloat($('[name="creabas2"]').val());
    var valueCrebas = parseFloat($('[name="creabas"]').val()) + 0.3;

    if (valueCreabas2 < valueCrebas) {
        $('#creabas2-msg').removeClass('display-none');
        $('#creabas2-msg').text('Não há como comprovar a informação. Dúvidas: entre em contato com a equipe do estudo.');
        $('[name = "creabas2"]').val('');
    } else {
        $('#creabas2-msg').addClass('display-none');
    }
}
    
24.10.2017 / 13:08
0

Your script is correct, you may have missed parseFloat because the .val() function returns a string , I have refactored your code.

//função para calcular a diferença
function formulaCreabas(valorCreabas2, valorCreabas, sucesso, erro) {
    var valorCreabas = parseFloat(valorCreabas);
    var valorCreabas2 = parseFloat(valorCreabas2);
    

    var subCreab = valorCreabas - valorCreabas2
    console.log(subCreab);
    if (subCreab < 0.2999999999999997) {
        if(erro) erro();
    } else {
        if(sucesso) sucesso();
    } 
}

//função de callback caso a diferença esteja ok
function sucessoCreabas() {
  console.info("Cálculo de Creabas ok.");
  //$('#creabas2-msg').addClass('display-none');
}

//função de callback caso a diferença seja menor que 0.3
function erroCreabas() {
  console.error("Não há como comprovar a informação. Dúvidas: entre em contato com a equipe do estudo.");
  //$('#creabas2-msg').removeClass('display-none');
  //$('#creabas2-msg').text('Não há como comprovar a informação. Dúvidas: entre em contato com a equipe do estudo.');
  //$('[name = "creabas2"]').val('');  
}


formulaCreabas(2.3, 2.6, sucessoCreabas, erroCreabas);
formulaCreabas(2.5, 2.6, sucessoCreabas, erroCreabas);

//o que você precisa chamar
//formulaCreabas($('[name="creabas2"]').val(), $('[name="creabas"]').val(), sucessoCreabas, erroCreabas);
    
24.10.2017 / 13:04
0

First the min and max properties of your input will not work, as they do not apply to type="text" , so I changed to type="number" and added step="0.1" to increment as desired.

I changed the logic a bit, instead of checking and alerting the user whenever I entered a wrong value, I opted to make it impossible to add a value outside of the minimum allowed ( Remember that no validation on the client side ensures the security of the information, so validate on the server side also ).

I wiped out a little HTML to get more visual, see if it caters to you:

$(function(){  //Executa ao carregar
  valorMinimoCreabas(); //Chama a função que defini o minimo

  $("#creabas").on("change", function(){ //sempre que creabas for alterado
    $("#creabas2").val(""); //Limpo o campo creabas2
    valorMinimoCreabas();  //Redefino o minimo
  });
});

function valorMinimoCreabas(){
  var min = parseFloat($("#creabas").val())+0.3; //Somo 0.3 ao valor originar de creabas
  
  if(!isNaN(min))
    $("#creabas2").prop("min", min); //Defino minimo valor
}
input {
  width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div><labelfor="creabas">
   Creatinina (posterior à admissão hospitalar e a mais   próxima da randomização): 
   <span style="color:red;">*</span>
</label>
   <input type="number" class="form-control" placeholder="00.00" value="2.3" step="0.1" name="creabas" id="creabas" min="0" max="15.0" />
   <span style="background: #E0E1E2;" class="input-group-addon"> mg/dL </span>
</div>
<div>
   <label>
      Se necessário, informe mais uma medida da creatinina nas 48 horas prévias a randomização, que comprove a elevação de 0,3mg/dL ou incremento de 50% no valor basal: 
      <span style="color:red;">*</span>
   </label>
   <input type="number" class="form-control " placeholder="00.00" name="creabas2" id="creabas2" min="0" max="15.0" step="0.1" width="100"/>
<span style="background: #E0E1E2;" class="input-group-addon">
   mg/dl
</span>
</div>
    
24.10.2017 / 13:40