Function running directly

3

When I click on the 'new' button calling the function to check the data, inside it I call another function to check the date it was informed!

function f_veri_dados()
{
    // existem outros dados
    // Data da Garantia
    f_veri_data(tx_dt_gtia);
    parent.location.replace("#"); --> chama outra aba se a verificação estiver certa
} 

Date verification:

function f_veri_data(w_data)
    { 
    w_form_dt="#";          
    w_tx_data = w_data.value;

    if (w_tx_data == "")
    {
    alert("Informe a data!!!");
    document.forms[w_form_dt].tx_dt_gtia.focus();   
    return false;
    }
  var w_datavalor = "";
  var w_dia, w_mes, w_ano = "";

  //Retira caracteres que não sejam números.
  var digitos="0123456789";
  for (w_i = 0; w_i < w_tx_data.length; w_i++)
      if (digitos.indexOf(w_tx_data.substr(w_i,1)) != -1)
         w_datavalor = w_datavalor+w_tx_data.substr(w_i,1);
  //Verifica a validade da data propriamente dita.


  if (w_datavalor.length > 5)
     {
     if (w_datavalor.length == 6){
         w_datavalor =w_datavalor.substr(0,4) + '20' +w_datavalor.substr(4,2);
    }
     w_dia = w_datavalor.substr(0,2);
     w_mes = w_datavalor.substr(2,2);
     w_ano = w_datavalor.substr(4,4);
     //Se o dia ou o mês forem maiores ele invalida a data.
     w_data_valida = new Date(w_ano,w_mes-1,w_dia);
     w_dia_val = w_data_valida.getDate();
     w_mes_val = w_data_valida.getMonth();

     if ((w_dia_val == w_dia) && (w_mes_val+1 == w_mes))
        {
        w_data.value = w_dia + "/" + w_mes + "/" + w_ano;
        return true;
        }
     }   
  w_tx_data.value = "";   
  alert(" Data inválida.");
  document.forms[w_form_dt].qtde_nf.focus();
  return false;
  }

The problem is: "It confirms that the date is invalid, but still continues running the program by calling the other tab!". It must be some error that I can not see if someone can see this error .. Thanks for informing me!

    
asked by anonymous 15.08.2014 / 16:16

1 answer

4

You are forgetting a clause to check the result of f_veri_data(tx_dt_gtia); , that is, the return of f_veri_data() is not being used.

Do this:

function f_veri_dados()
{
    // existem outros dados
    // Data da Garantia
    if (!f_veri_data(tx_dt_gtia)) return false; // aqui para o código se o retorno da outra função fôr false
    parent.location.replace("#"); --> chama outra aba se a verificação estiver certa
} 
    
15.08.2014 / 16:20