Skip to content

Instantly share code, notes, and snippets.

@laktek
Created December 29, 2010 06:38
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save laktek/758269 to your computer and use it in GitHub Desktop.
Save laktek/758269 to your computer and use it in GitHub Desktop.
Checks whether the given string (or object) is blank
(function($){
$.isBlank = function(string){
return(!string || $.trim(string) === "");
};
})(jQuery);
$.isBlank(" ") //true
$.isBlank("") //true
$.isBlank("\n") //true
$.isBlank("a") //false
$.isBlank(null) //true
$.isBlank(undefined) //true
$.isBlank([]) //true
@jtarchie
Copy link

jtarchie commented Jan 7, 2011

$.isBlank([]) // throws an excption

It appears that you are having unexpected behavior from ![](actually returns false).

@jtarchie
Copy link

jtarchie commented Jan 8, 2011

    $.isBlank = function(object) {
        return (
            ($.isPlainObject(object) && $.isEmptyObject(object)) ||
            ($.isArray(object) && object.length == 0) ||
            (typeof(object) == "string" && $.trim(object) === "") ||
            (!object)
        );
    };

This fixes the issue with empty array, and added empty hashes.

@yckart
Copy link

yckart commented Feb 27, 2013

jQuery.isBlank = function (obj) {
    if (!obj || $.trim(obj) === "") return true;
    if (obj.length && obj.length > 0) return false;

    for (var prop in obj) if (obj[prop]) return false;
    return true;
};
console.log(
    $.isBlank(0), // true
    $.isBlank(""), // true
    $.isBlank(null), // true
    $.isBlank(false), // true
    $.isBlank(undefined), // true

    $.isBlank([]), // true
    $.isBlank([null]), // true
    $.isBlank([undefined]), // true

    $.isBlank({}), // true
    $.isBlank({foo: 0}), // true
    $.isBlank({foo: null}), // true
    $.isBlank({foo: false}), // true
    $.isBlank({foo: undefined}), // true

    $.isBlank("Hello"), // false
    $.isBlank([1,2,3]), // false
    $.isBlank({foo: 1}), // false
    $.isBlank({foo: 3, bar: [1,2,3]}), // false

    "incorrect:",
    $.isBlank(1), // true
    $.isBlank(true), // true

    $.isBlank([0]), // false
    $.isBlank([false]), // false
    $.isBlank("0"), // false
    $.isBlank(["0"]), // false
    $.isBlank({foo: "0"}) // false
);

@unitario
Copy link

@yckart Hey, here form the future to tell you that for (var prop in obj) if (obj[prop]) return false will return false for additional properties on the prototype chain and this might not be the desired behavior; it would be wise to use for (var prop in obj) if (obj.hasOwnProperty(key) && obj[key]) return false. Also jQuery, is this thing still around?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment