Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gravando valor inválido

Tenho um cadastro simples de jogo, onde no form eu informo um placar que deve estar entre 0 e 999. Se informo um valor inválido como -25 e clico em Adicionar aparece a mensagem de consistência informando que o valor está errado. Mas quando eu corrijo o valor e clico em adicionar novamente, ele grava o valor antigo inválido. Acredito eu que isso ocorra porque o valor é oriundo de uma funtion, que grava o valor antigo. Mas como posso fazer para gravar o valor na função caso ela seja somente válida? O programa está no Git caso alguém tenha interesse em ver: https://github.com/raafaelnunes12/desafio-publica/tree/master/Javascript

1 resposta
solução!

Olá Rafael, tudo bem?

Então, acredito que neste caso a gente precisa de uma outra abordagem que funcionaria da seguinte maneira:

  1. Obtem os dados do formulário em um objeto placar
  2. Valida os Erros do placar
  3. Se não houver erros, adiciona mais 2 atributos nesse objeto

O grande problema é que os valores errados estão mexendo na sua variável de controle de pontos, então um valor -25 se torna o menor valor, e só depois validamos e vemos que é inválido, então o que poderiamos fazer é o seguinte:

function obtemJogoDoFormulario(form) {
  var jogo = {
    codJogo: form.jogo.value, //Informação do campo Jogo do form
    placar: form.placar.value, //Informação do campo Placar do form
  };

  return jogo;
}

Após isso teremos as validações, correto?

  var registro = obtemJogoDoFormulario(form); // Armazena os dados retornados do Jogo

  var erroJogo = validaJogo(registro.codJogo); //Armazena o retorno da função validaJogo
  var erroPlacar = validaPlacar(registro.placar); //Armazena o retorno da função validaPlacar

[ IFS...]

O que você pode fazer é agora criar uma função para alterar esse objeto assim:

  adicionaMaximoEMinimoNoPlacar(registro)
  adicionaJogoNaTabela(registro); //Monta a estrutura da table do id tabela-jogos

Neste momento temos certeza que os dados estão corretos, então:

function adicionaMaximoEMinimoNoPlacar(placar){
    placar.minimoTemporada = calculaMinimoTemporada(Number(placar.placar));
    placar.maximoTemporada = calculaMaximoTemporada(Number(placar.placar));
    placar.recordeMinino = quebraMinimo; //Retorno da variável quebraMinimo
    placar.recordeMaximo =  quebraMaximo; //Retorno da variável quebraMaximo
}

Outra alternativa, porém com repetição de código:

Nas funções de validação você pode adicionar essa verificação, dessa maneira caso o valor seja invalido em nenhum momento você chega a alterar o valorMaximo, valorMinimo e as de quebra de record:

function calculaMaximoTemporada(placar) {

  if(placar > 999) return;

  if (placar > maximoPontos) {
[...]
function calculaMinimoTemporada(placar) {

  if(placar < 0) return;

  if (placar < minimoPontos) {
[...]
`

Compreendeu?

Abraços e Bons Estudos!