1(function($) { 2 var methods; 3 var customClass = 'custom-forms-wrapper'; 4 var customSelector = '.' + customClass; 5 methods = { 6 init: function (options) { 7 return this.each(function () { 8 var self = $(this); 9 var inputs = self.children('input'); 10 self.addClass(customClass); 11 //Êëàññû äëÿ îáåðòîê 12 inputs.each(function () { 13 var self = $(this); 14 var parent = self.parent(customSelector); 15 switch( $(this).attr('type') ) { 16 case 'checkbox': 17 parent.addClass('checkbox'); 18 self.addClass('master'); 19 break; 20 case 'radio': 21 parent.addClass('radio'); 22 self.addClass('master'); 23 break; 24 case 'text': 25 parent.addClass('text'); 26 self.addClass('master'); 27 break; 28 case 'file': 29 parent.addClass('file'); 30 self.addClass('invisible'); 31 parent.append('<div class="master">Âûáåðèòå ôàéë</div>'); 32 parent.append('<div class="slave file"></div>'); 33 parent.append('<div class="slave file-blocker"></div>'); 34 break; 35 36 } 37 }); 38 //Ñèíõðîíèçèðóåì êëàññû îáåðòîê ñ ñîñòîÿíèåì ïî óìîë÷àíèþ ó èíïóòîâ 39 inputs.each(function(){ 40 var parent = $(this).parent(customSelector); 41 if ($(this).is(':checked')) 42 parent.addClass('active'); 43 else 44 parent.removeClass('active'); 45 46 if ($(this).is(':disabled')) 47 parent.addClass('disable'); 48 else 49 parent.removeClass('disable'); 50 }); 51 //Îáíîâëÿåì ñîñòîÿíèå 52 inputs.change(function(){ 53 $(this).customForms('refresh'); 54 }); 55 //Íàâèãàöèÿ 56 inputs.focus(function(){ 57 var parent = $(this).parent(customSelector); 58 parent.addClass('focus'); 59 }); 60 inputs.blur(function(){ 61 var parent = $(this).parent(customSelector); 62 parent.removeClass('focus'); 63 }); 64 }); 65 }, 66 refresh: function() { 67 var parent = $(this).parent(customSelector); 68 //Óáèðàåì âûäåëåíèå ñ ãðóïïû ðàäèî 69 if( $(this).is('[type=radio]') ) 70 $(customSelector + '.radio input[name="'+ $(this).attr('name') +'"]').each(function () { 71 var parent = $(this).parent(customSelector); 72 parent.removeClass('active'); 73 }); 74 //Ìåíÿåì èìÿ â ôàéë-ôåéêå 75 if( $(this).is('[type=file]') ) { 76 var file = $(this).val(); 77 file = file.replace("C:\\fakepath\\",""); 78 if (file) { 79 parent.find('.master').text(file); 80 } else { 81 parent.find('.master').text('Âûáåðèòå ôàéë'); 82 } 83 } 84 //Ïðîñòàâëÿåì êëàññû îáíîâëÿåìîìó ýëåìåíòó 85 if ($(this).is(':checked')) 86 parent.addClass('active'); 87 else 88 parent.removeClass('active'); 89 90 if ($(this).is(':disabled')) 91 parent.addClass('disable'); 92 else 93 parent.removeClass('disable'); 94 } 95 }; 96 $.fn.customForms = function ( method ) { 97 if ( methods[method] ) { 98 return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 )); 99 } else if ( typeof method === 'object' || ! method ) { 100 return methods.init.apply( this, arguments ); 101 } else { 102 $.error( 'Ìåòîä ' + method + ' â jQuery.customForms íå ñóùåñòâóåò' ); 103 } 104 }; 105})(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.