1/********************************************* 2 3 jQuery extended placeholder plugin. 4 Text, password, and textarea fields supported. 5 Version: 0.9.2 6 Author: Sergey Estrin 7 Site: http://g-rain-design.ru/en/jquery/placeholder/ 8 Released under the MIT License. 9 10*********************************************/ 11 12(function($) { 13 14 $.fn.placeholder_clear = function() { 15 16 var arPlaceholders = $(this).data("placeholders"); 17 18 $(this).find("input[placeholder], textarea[placeholder]").each(function(){ 19 20 var field_name = $(this).attr("name"); 21 22 if(field_name in arPlaceholders) 23 if($(this).val()==arPlaceholders[field_name]) 24 $(this).val(""); 25 26 }); 27 28 }; 29 30 31 $.fn.placeholder_focus = function(caption) { 32 33 if(this.val()==caption) { 34 this.val(""); 35 this.removeClass($.fn.placeholder_options.placeholded_class); 36 } 37 38 }; 39 40 $.fn.placeholder_blur = function(caption) { 41 42 if(this.val()=="") { 43 this.val(caption); 44 this.addClass($.fn.placeholder_options.placeholded_class); 45 } 46 47 }; 48 49 $.fn.placeholder_password_focus = function(caption) { 50 51 if(!this.is(':password')) { 52 53 if(this.val()==caption) { 54 var new_input = $('<input type="password" name="' + this.attr('name') + '" value="" />'); 55 new_input.attr("placeholder",caption); 56 new_input.attr("class",this.attr("class")); 57 new_input.removeClass("pie_first-child"); // PIE compatibility 58 new_input.removeClass($.fn.placeholder_options.placeholded_class); 59 new_input.blur(function(){ new_input.placeholder_password_blur(caption); }); 60 this.replaceWith(new_input); 61 new_input.focus(); 62 new_input.focus(); 63 } 64 65 } 66 67 }; 68 69 $.fn.placeholder_password_blur = function(caption) { 70 71 if(this.is(':password')) { 72 73 if(this.val()=="") { 74 var new_input = $('<input type="text" name="' + this.attr('name') + '" value="' + caption + '" />'); 75 new_input.attr("placeholder",caption); 76 new_input.attr("class",this.attr("class")); 77 new_input.removeClass("pie_first-child"); // PIE compatibility 78 new_input.addClass($.fn.placeholder_options.placeholded_class); 79 new_input.focus(function(){ new_input.placeholder_password_focus(caption); }); 80 this.replaceWith(new_input); 81 } 82 83 } 84 85 }; 86 87 $.fn.placeholder = function(opts) { 88 89 if(opts!=null) 90 for(var index in opts) 91 if($.fn.placeholder_options[index]!=null) 92 $.fn.placeholder_options[index]=opts[index]; 93 94 var elements = this; 95 96 if($.fn.placeholder_options.container) { 97 $($.fn.placeholder_options.container_selector).each(function(){ 98 var caption = $(this).find($.fn.placeholder_options.caption_selector+":first").html(); 99 var input = $(this).find("input:text:first, input:password:first, textarea:first"); 100 if(caption && input[0]) { 101 input.attr("placeholder",caption); 102 elements.push(input); 103 } 104 }); 105 } 106 107 elements.each(function() { 108 109 var input = $(this); 110 111 var caption = $.fn.placeholder_options.caption_prefix + input.attr("placeholder") + $.fn.placeholder_options.caption_postfix; 112 113 var pform = input.parents('form:first'); 114 var pdata = pform.data("placeholders"); 115 if(!(pdata instanceof Array)) pdata = []; 116 //pdata.push({ name: input.attr("name"), caption: caption }); 117 pdata[input.attr("name")] = caption; 118 119 pform.data("placeholders",pdata); 120 pform.unbind("submit",$.fn.placeholder_clear).bind("submit",$.fn.placeholder_clear); 121 122 if(input.is(':password')) 123 { 124 125 input.placeholder_password_blur(caption); 126 input.focus(function(){ input.placeholder_password_focus(caption); }); 127 input.blur(function(){ input.placeholder_password_blur(caption); }); 128 129 } else { 130 131 input.placeholder_blur(caption); 132 input.focus(function(){ input.placeholder_focus(caption); }); 133 input.blur(function(){ input.placeholder_blur(caption); }); 134 135 } 136 137 }); 138 139 }; 140 141 // default options 142 143 $.fn.placeholder_options = { 144 placeholded_class: "placeholded", 145 caption_prefix: "", 146 caption_postfix: "", 147 container: false, 148 container_selector: ".form-field-container", 149 caption_selector: ".form-field-caption" 150 }; 151 152 153})(jQuery); 154 155 156$().ready(function(){ 157 158 $(":input[placeholder], textarea[placeholder]").placeholder(); 159 //$(":input[placeholder], textarea[placeholder]").placeholder({container: true}); 160 161});
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.