-
Notifications
You must be signed in to change notification settings - Fork 3
/
jquery.html5placeholders.js
59 lines (48 loc) · 1.39 KB
/
jquery.html5placeholders.js
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
/**
* Provides a jQuery plugin to manage the display
* of labels when HTML5 placeholders are present.
*
* @author Scott Rossillo
*
*/
(function( $ ) {
var supportedInputTypes = ['email', 'password', 'search', 'tel', 'text'];
var placeholderSupport = function() {
var input = document.createElement('input');
return ('placeholder' in input);
};
var inputTypeSupported = function( $field ) {
return ( $.inArray( $field.attr('type'), supportedInputTypes) >= 0 );
};
$.fn.html5placeholders = function( options ) {
var settings = $.extend(
{
hideSelectLabels: true,
hideMethod: function(el) {
el.css('position', 'absolute').css('clip', 'rect(1px, 1px, 1px, 1px)');
}
},
options
);
return this.each(function () {
// plugin contents here
var $form = $(this);
if( placeholderSupport() ) {
$form.find('input').each(function() {
var $field = $(this),
$label = $form.find('label[for=\'' + $field.attr('id') +'\']').first();
if($label.length && inputTypeSupported( $field )) {
$field.attr('placeholder', $label.text());
settings.hideMethod($label);
}
});
// hide select labels if requested
if( settings.hideSelectLabels ) {
$form.find('select').each(function() {
settings.hideMethod($form.find('label[for=\'' + $(this).attr('id') +'\']'));
});
}
}
});
}
})(jQuery);