Vinoth Kumar C M
Vinoth Kumar C M

Reputation: 10618

javascript : checking boolean values

I have a boolean value set as a hidden variable in the form and I have the below javascript .

         $().ready(function() {

             var flag =  $('#popUpFlag').val();

             alert("flag = "+flag);

             if(flag){
                alert("flag is true");
             }else{
                alert("flag is false");
             }
        })

These are the outputs for the alert .

         flag =
         flag is false


         flag = false
         flag is false


         flag = true
         flag is false

My concern is obviously the third output . When the flag is true , why is it printing "flag is false" , instead of "flag is true" . I tested it in IE8 and FF 4

Suggestions are welcome.

Upvotes: 10

Views: 48285

Answers (3)

Guffa
Guffa

Reputation: 700830

No, you don't have a boolean value in the hidden field. The value in the field is always a string.

When you use the string value as if it was a boolean value, you get unexpected results. A condition is false if the value is false, 0, "" or null, but the string "false" is neither, so it's evaluated as true.

If you want a boolean value, you have to parse the string. An easy way is to simply check if the string has a specific value:

var flag =  $('#popUpFlag').val() === 'true';

Upvotes: 16

Cyril Gupta
Cyril Gupta

Reputation: 13723

Hmm... I suspect that the value you are using is a string, so you're seeing the value correctly in the alert, but not when it tries to look at it like a boolean.

How can I convert a string to boolean in JavaScript?

Just try ocnverting to boolean and see if it still gives you the same issue

Upvotes: 0

Shadow Wizzard
Shadow Wizzard

Reputation: 66398

flag is a string, so have this instead:

if (flag === "true") {
  //true
}
else if (flag === "false") {
  //false
}

Upvotes: 6

Related Questions