form_placeholder.js
2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
(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);