PageSourceSearch

https://web.cientifica.edu.pe/modules/contrib/form_placeholder/js/form_placeholder.js?v=8.9.11

js cientifica.edu.pe collected 2026-10-01 11:59:12 UTC 3,259 bytes, 87 lines download raw bytes

1(function ($) {
2  'use strict';
3
4  Drupal.form_placeholder = {};
5
6  Drupal.form_placeholder.elementIsSupported = function ($element) {
7    var supportedElement = $element.is('input[type=number], input[type=text], input[type=date], input[type=email], input[type=url], input[type=tel], input[type=password], textarea');
8    var hasId = $element.attr('id');
9    return supportedElement && hasId;
10  };
11
12  Drupal.form_placeholder.placeholderIsSupported = function () {
13    // Opera Mini v7 doesn’t support placeholder although its DOM seems to
14    // indicate so.
15    var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
16    return 'placeholder' in document.createElement('input') && !isOperaMini;
17  };
18
19  Drupal.behaviors.form_placeholder = {
20    attach: function (context, settings) {
21      // In some cases settings after ajax form submit could contain only
22      // settings from response but not all Drupal.settings data.
23      if (!settings.hasOwnProperty('form_placeholder')) {
24        settings = Drupal.settings;
25      }
26      var include = settings.form_placeholder.include;
27      if (include) {
28        include += ', ';
29      }
30      include += '.form-placeholder-include-children *';
31      include += ', .form-placeholder-include';
32      var exclude = settings.form_placeholder.exclude;
33      if (exclude) {
34        exclude += ', ';
35      }
36      exclude += '.form-placeholder-exclude-children *';
37      exclude += ', .form-placeholder-exclude';
38
39      var required_indicator = settings.form_placeholder.required_indicator;
40
41      $(include, context).not(exclude).each(function () {
42        var $textfield = $(this);
43        var elementSupported = Drupal.form_placeholder.elementIsSupported($textfield);
44        var placeholderSupported = Drupal.form_placeholder.placeholderIsSupported() || $().placeholder;
45
46        // Placeholder is supported.
47        if (elementSupported && placeholderSupported) {
48          var $form = $textfield.closest('form');
49          var $label = $form.find('label[for=' + this.id + ']');
50          var placeholder = $.trim($label.text());
51
52          // Handle required field marker.
53          if ($label.hasClass('form-required')) {
54            switch (required_indicator) {
55              case 'append':
56                $textfield.after('<span class="form-required"></span>');
57                break;
58              case 'remove':
59                // It's removed anyway, so we don't have to do anything.
60                break;
61              case 'leave':
62                placeholder += ' *';
63                break;
64              case 'text':
65                placeholder += ' (' + Drupal.t('required') + ')';
66                break;
67            }
68          }
69          else if (required_indicator === 'optional') {
70            placeholder += ' (' + Drupal.t('optional') + ')';
71          }
72
73          if (!$textfield.attr('placeholder')) {
74            $textfield.attr('placeholder', placeholder);
75            $label.addClass('visually-hidden');
76          }
77
78          // Fallback support for older browsers.
79          if (!Drupal.form_placeholder.placeholderIsSupported() && $().placeholder) {
80            $textfield.placeholder();
81          }
82        }
83      });
84    }
85  };
86
87})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.