Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
shim for browsers that don't support the html5 placeholder attribute
setup_placeholders = (function() {
$.support.placeholder = false;
test = document.createElement('input');
if('placeholder' in test) {
$.support.placeholder = true;
return function() {}
} else {
return function(){
$(function() {
var active = document.activeElement;
$('form').delegate(':text', 'focus', function () {
var _placeholder = $(this).attr('placeholder'),
_val = $(this).val();
if (_placeholder != '' && _val == _placeholder) {
$(this).val('').removeClass('hasPlaceholder');
}
}).delegate(':text', 'blur', function () {
var _placeholder = $(this).attr('placeholder'),
_val = $(this).val();
// No need to test for values specific to a particular jQuery version
// undefined and an empty string both are falsy
if (!_placeholder && ( _val == '' || _val == _placeholder)) {
$(this).val(_placeholder).addClass('hasPlaceholder');
}
}).submit(function () {
$(this).find('.hasPlaceholder').each(function() { $(this).val(''); });
});
$(':text').blur();
$(active).focus();
});
}
}
})();
@AlexCuse

This comment has been minimized.

Show comment
Hide comment
@AlexCuse

AlexCuse Jul 10, 2012

.attr('blah') returns undefined in newer versions of jQuery - you can work around this using:

var _placeholder = $(this).attr('placeholder') || ''

https://gist.github.com/3084976

.attr('blah') returns undefined in newer versions of jQuery - you can work around this using:

var _placeholder = $(this).attr('placeholder') || ''

https://gist.github.com/3084976

@aaronmccall

This comment has been minimized.

Show comment
Hide comment
@aaronmccall

aaronmccall Jul 12, 2012

Updated to be friendly to more versions of jQuery. May update for prop method detection too.

Owner

aaronmccall commented Jul 12, 2012

Updated to be friendly to more versions of jQuery. May update for prop method detection too.

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