Doubt with jquery content validation;

0

I have a javascript that should run only when the content value of the edit is different from null or empty, but the same is always running.

    <script type="text/javascript">
                function AdicionarClasseMenuSelecionado(){
                    var menuatual = document.getElementById('MenuSelecionado').value;
                    var abaatual  = document.getElementById('AbaSelecionado').value;

                        alert(menuatual);
                        alert(abaatual);

                       //remove todos os active do cabecalho 
                       $("ul.nav.nav-tabs li").removeClass("active");
                       //remove todos os active do content 
                       $(".tab-content div").removeClass("active in");

                        //adiciona o active que retornou 
                        $("#"+menuatual).addClass("active in");
                        $("#"+abaatual).addClass("active");
                    };


                    $(document).ready(function(){
                        var menuatual = document.getElementById('MenuSelecionado').value;
                        if (menuatual != null && menuatual != undefined) {
                            AdicionarClasseMenuSelecionado();
                        } else {
                           alert("não foi enviado nenhum menu");
                        }      
                    });
    </script>

Html:

<input name="MenuSelecionado" type="hidden"  value="null" id="MenuSelecionado">
<input name="AbaSelecionado" type="hidden"  value="null" id="AbaSelecionado">
    
asked by anonymous 19.07.2018 / 16:29

1 answer

0

See the values below:

// false
var menuatual = 0; // zero é false

// true
var menuatual = 1; // número diferente de zero não é false

// false
var menuatual; // undefined é false porque não tem valor atribuído

// true
var menuatual = "0"; // string (mesmo o zero) não é false    

// false
var menuatual = ""; // vazio é false, mas não é null nem undefined

// true
var menuatual = " "; // espaço é string, não é false

Looking at your comparison:

menuatual != null && menuatual != undefined

You're saying that menuatual can not be null and neither can undefined . So if it is empty ( menuatual == '' ) will validate, because emptiness is not null and undefined .

What you need to do is just verify that the menuatual variable is true by simply putting it in if :

if(menuatual){
   // menuatual é true
   // ou seja, não é vazio, não é null, não é undefined
   // e não é o número zero (0 é diferente de "0")
}else{
   // menuatual é false
}

That is, you expect the variable not to be undefined , null , empty or the number 0.

    
19.07.2018 / 19:06