(function($) { Drupal.form_placeholder = {}; Drupal.form_placeholder.placeholderIsSupported = function() { // Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so. var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]'; return 'placeholder' in document.createElement('input') && !isOperaMini; }; Drupal.behaviors.form_placeholder = { attach: function(context, settings) { var include = settings.form_placeholder.include; if (include) { include += ', '; } include += '.form-placeholder-include-children *'; include += ', .form-placeholder-include'; var exclude = settings.form_placeholder.exclude; if (exclude) { exclude += ', '; } exclude += '.form-placeholder-exclude-children *'; exclude += ', .form-placeholder-exclude'; var required_indicator = settings.form_placeholder.required_indicator; $(include, context).not(exclude).each(function() { $textfield = $(this); // Check if element is a textfield. if (!$textfield.is('input[type=text], input[type=email], input[type=password], textarea')) { return; } // Placeholder is supported. else if (Drupal.form_placeholder.placeholderIsSupported() || settings.form_placeholder.fallback_support) { $form = $textfield.closest('form'); $label = $form.find('label[for=' + this.id + ']'); if (required_indicator === 'append') { $label.find('.form-required').insertAfter($textfield).prepend(' '); } else if (required_indicator === 'remove') { $label.find('.form-required').remove(); } else if (required_indicator === 'text') { $label.find('.form-required').text('(' + Drupal.t('required') + ')'); } $textfield.attr('placeholder', $.trim($label.text())); $label.hide(); // Fallback support for older browsers. if (!Drupal.form_placeholder.placeholderIsSupported() && settings.form_placeholder.fallback_support) { $textfield.placeholder(); } } }); } }; })(jQuery);