Doubt with validation of jquery content;

Asked

Viewed 27 times

0

I have a javascript that should run only when the content value of 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">
  • 1

    ou vazio, did not speak for example a || menuatual == "" to validate if it is empty? null and undefined are different from empty

  • Man, it’s not very nice to mix the syntax of Javascript with that of the jQuery.

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

Are you saying that menuatual can’t be null and also cannot be Undefined. So if it’s empty (menuatual == '') will validate, because empty is not null nor Undefined.

What you need to do is just check if the variable menuatual is true just putting her 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 hope that the variable is not Undefined, null, empty or the number 0.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.