Created
January 4, 2011 22:45
-
-
Save aaronmccall/765595 to your computer and use it in GitHub Desktop.
shim for browsers that don't support the html5 placeholder attribute
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
}); | |
} | |
} | |
})(); |
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
.attr('blah') returns undefined in newer versions of jQuery - you can work around this using:
https://gist.github.com/3084976