Это должно работать непосредственно внутри $(function(){...})
структуры, но во что бы то ни стало, поместить ее в function modernizer_init() {}
, если это то, что нужно вашему приложению.
javascript:
$("body").on('focusin', '[placeholder]', function(evt) {
var $input = $(evt.target);
if ($input.val() == $input.attr('placeholder')) {
$input.val('');
$input.removeClass('placeholder');
}
}).on('focusout', '[placeholder]', function(evt) {
var $input = $(evt.target);
if ($input.val() == '' || $input.val() == $input.attr('placeholder')) {
$input.addClass('placeholder');
$input.val($input.attr('placeholder'));
}
}).on('submit', 'form', function(evt) {
var $form = $(evt.target);
$form.find('[placeholder]').each(function() {
var $input = $(this);
if ($input.val() == $input.attr('placeholder')) {
$input.val('');
}
});
});
$('[placeholder]').focusout();
Это работает путем делегирования обработки событий focusin (focus) и focusout (blur) для тела документа (или более локального контейнера, если хотите), которыйэто способ использования jQuery 1.7.1 для устаревших bind()
, .live()
и .delegate()
.
Работает: http://jsfiddle.net/wg2eX/2/