Skip to content

Instantly share code, notes, and snippets.

@thomasphorton
Created October 30, 2013 15:06
Show Gist options
  • Save thomasphorton/7234200 to your computer and use it in GitHub Desktop.
Save thomasphorton/7234200 to your computer and use it in GitHub Desktop.
/* * Placeholder plugin for jQuery * --- * Copyright 2010, Daniel Stocks (http://webcloud.se) * Released under the MIT, BSD, and GPL Licenses. */
;
(function (b) {
function d(a) {
this.input = a;
a.attr("type") == "password" && this.handlePassword();
b(a[0].form).submit(function () {
if (a.hasClass("placeholder") && a[0].value == a.attr("placeholder")) a[0].value = ""
})
}
d.prototype = {
show: function (a) {
if (this.input[0].value === "" || a && this.valueIsPlaceholder()) {
if (this.isPassword) try {
this.input[0].setAttribute("type", "text")
} catch (b) {
this.input.before(this.fakePassword.show()).hide()
}
this.input.addClass("placeholder");
this.input[0].value = this.input.attr("placeholder")
}
},
hide: function () {
if (this.valueIsPlaceholder() && this.input.hasClass("placeholder") && (this.input.removeClass("placeholder"), this.input[0].value = "", this.isPassword)) {
try {
this.input[0].setAttribute("type", "password")
} catch (a) {}
this.input.show();
this.input[0].focus()
}
},
valueIsPlaceholder: function () {
return this.input[0].value == this.input.attr("placeholder")
},
handlePassword: function () {
var a = this.input;
a.attr("realType", "password");
this.isPassword = !0;
if (b.browser.msie && a[0].outerHTML) {
var c = b(a[0].outerHTML.replace(/type=(['"])?password\1/gi,
"type=$1text$1"));
this.fakePassword = c.val(a.attr("placeholder")).addClass("placeholder").focus(function () {
a.trigger("focus");
b(this).hide()
});
b(a[0].form).submit(function () {
c.remove();
a.show()
})
}
}
};
var e = !! ("placeholder" in document.createElement("input"));
b.fn.placeholder = function () {
return e ? this : this.each(function () {
var a = b(this),
c = new d(a);
c.show(!0);
a.focus(function () {
c.hide()
});
a.blur(function () {
c.show(!1)
});
b.browser.msie && (b(window).load(function () {
a.val() && a.removeClass("placeholder");
c.show(!0)
}),
a.focus(function () {
if (this.value == "") {
var a = this.createTextRange();
a.collapse(!0);
a.moveStart("character", 0);
a.select()
}
}))
})
}
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment