Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting bool value to input and getting string type via javascript/jquery

When I get a value or set a value (from the server side, for example) for an input that is a boolean type it comes as "True" or "False" instead of true or false.

For example:

//"True"
var isDated = $('.someClass').val();


//will not pass because isDated is a string
if (isDated == true){
    console.log("passed");
}

Why does this happend? Which is the best way to avoid this?


EDIT:

I've found a blog that has a solution to avoid this problem: http://www.peterbe.com/plog/data-and-attr-in-jquery

Below a prototype method called .toBoolean() to validate true/false when it comes as a string based on some responses from this post:

String.prototype.toBoolean = function ()
{
    var dictionary = { "True": true, "False": false };
    return dictionary[this];
};

Boolean.prototype.toBoolean = function () {
    return this;
};

Number.prototype.toBoolean = function ()
{
    if (this) {
        return true;
    }

    return false;
};
like image 643
Leo Avatar asked Sep 14 '15 18:09

Leo


1 Answers

If you want to know why C# outputs True and False instead of the lowercase versions, see this question.

If you want to know why it's not converted to a boolean value, it's because all <input> elements' values are considered text by JavaScript. It's up to you to convert it into another type. With checkboxes/radio buttons that's already done by using the .checked attribute (for jQuery, either $('.someClass').is(':checked') or $('.someClass').prop('checked') will work). Otherwise, the best way would be comparing the value to a string, and using that, for example: if ($('.someClass').val().toLowerCase() === 'true').

like image 67
Pluto Avatar answered Sep 22 '22 05:09

Pluto