/* * jQuery In-field Labels Plugin v1.0 * http://richardscarrott.co.uk/posts/view/jquery-in-field-labels * * Copyright (c) 2010 Richard Scarrott * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * Requires jQuery v1.3+ * */ (function($) { $.fn.inFieldLabels = function(filter) { var removeLabel = function($input) { // remove label if in 'label' state if ($input.hasClass('dummy')) { $input.hide().prev('input').show().focus(); } else if ($input.hasClass('label')) { $input.removeClass('label').val(''); } }; var addLabel = function($input) { var label = $input.data('label'), val = $input.val(); // add label if val is empty if ($input.is('input:password') && (val === '')) { $input.hide().next('input').val(label).show(); } else if (val === '') { $input.addClass('label').val(label); } }; return this.each(function() { var $form = $(this), $inputs = $form.find('input[type=text], input[type=password], textarea'); if (filter) {$inputs = $inputs.filter(filter);} $inputs.each(function() { var $input = $(this), label = $form.find('label[for=' + $input.attr('id') + ']').hide().text(); $input.data('label', label) .focus(function() { removeLabel($input); }).blur(function() { addLabel($input); }); if ($input.is('input:password')) { var $dummy = $('').insertAfter($input).focus(function() { removeLabel($dummy); }); if ($input.val() !== '') {$dummy.hide();} } addLabel($input); }); $form.submit(function() { $inputs.each(function() { removeLabel($(this)); }); }); }); }; })(jQuery);