mirror of
				https://github.com/dawidolko/Website-Templates.git
				synced 2025-10-27 16:03:10 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			185 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*! http://mths.be/placeholder v2.0.8 by @mathias */
 | ||
| ;(function(window, document, $) {
 | ||
| 
 | ||
| 	// Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so
 | ||
| 	var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
 | ||
| 	var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
 | ||
| 	var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
 | ||
| 	var valHooks = $.valHooks;
 | ||
| 	var propHooks = $.propHooks;
 | ||
| 	var hooks;
 | ||
| 	var placeholder;
 | ||
| 
 | ||
| 	if (isInputSupported && isTextareaSupported) {
 | ||
| 
 | ||
| 		placeholder = $.fn.placeholder = function() {
 | ||
| 			return this;
 | ||
| 		};
 | ||
| 
 | ||
| 		placeholder.input = placeholder.textarea = true;
 | ||
| 
 | ||
| 	} else {
 | ||
| 
 | ||
| 		placeholder = $.fn.placeholder = function() {
 | ||
| 			var $this = this;
 | ||
| 			$this
 | ||
| 				.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
 | ||
| 				.not('.placeholder')
 | ||
| 				.bind({
 | ||
| 					'focus.placeholder': clearPlaceholder,
 | ||
| 					'blur.placeholder': setPlaceholder
 | ||
| 				})
 | ||
| 				.data('placeholder-enabled', true)
 | ||
| 				.trigger('blur.placeholder');
 | ||
| 			return $this;
 | ||
| 		};
 | ||
| 
 | ||
| 		placeholder.input = isInputSupported;
 | ||
| 		placeholder.textarea = isTextareaSupported;
 | ||
| 
 | ||
| 		hooks = {
 | ||
| 			'get': function(element) {
 | ||
| 				var $element = $(element);
 | ||
| 
 | ||
| 				var $passwordInput = $element.data('placeholder-password');
 | ||
| 				if ($passwordInput) {
 | ||
| 					return $passwordInput[0].value;
 | ||
| 				}
 | ||
| 
 | ||
| 				return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
 | ||
| 			},
 | ||
| 			'set': function(element, value) {
 | ||
| 				var $element = $(element);
 | ||
| 
 | ||
| 				var $passwordInput = $element.data('placeholder-password');
 | ||
| 				if ($passwordInput) {
 | ||
| 					return $passwordInput[0].value = value;
 | ||
| 				}
 | ||
| 
 | ||
| 				if (!$element.data('placeholder-enabled')) {
 | ||
| 					return element.value = value;
 | ||
| 				}
 | ||
| 				if (value === '') {
 | ||
| 					element.value = value;
 | ||
| 					// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
 | ||
| 					if (element != safeActiveElement()) {
 | ||
| 						// We can't use `triggerHandler` here because of dummy text/password inputs :(
 | ||
| 						setPlaceholder.call(element);
 | ||
| 					}
 | ||
| 				} else if ($element.hasClass('placeholder')) {
 | ||
| 					clearPlaceholder.call(element, true, value) || (element.value = value);
 | ||
| 				} else {
 | ||
| 					element.value = value;
 | ||
| 				}
 | ||
| 				// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
 | ||
| 				return $element;
 | ||
| 			}
 | ||
| 		};
 | ||
| 
 | ||
| 		if (!isInputSupported) {
 | ||
| 			valHooks.input = hooks;
 | ||
| 			propHooks.value = hooks;
 | ||
| 		}
 | ||
| 		if (!isTextareaSupported) {
 | ||
| 			valHooks.textarea = hooks;
 | ||
| 			propHooks.value = hooks;
 | ||
| 		}
 | ||
| 
 | ||
| 		$(function() {
 | ||
| 			// Look for forms
 | ||
| 			$(document).delegate('form', 'submit.placeholder', function() {
 | ||
| 				// Clear the placeholder values so they don't get submitted
 | ||
| 				var $inputs = $('.placeholder', this).each(clearPlaceholder);
 | ||
| 				setTimeout(function() {
 | ||
| 					$inputs.each(setPlaceholder);
 | ||
| 				}, 10);
 | ||
| 			});
 | ||
| 		});
 | ||
| 
 | ||
| 		// Clear placeholder values upon page reload
 | ||
| 		$(window).bind('beforeunload.placeholder', function() {
 | ||
| 			$('.placeholder').each(function() {
 | ||
| 				this.value = '';
 | ||
| 			});
 | ||
| 		});
 | ||
| 
 | ||
| 	}
 | ||
| 
 | ||
| 	function args(elem) {
 | ||
| 		// Return an object of element attributes
 | ||
| 		var newAttrs = {};
 | ||
| 		var rinlinejQuery = /^jQuery\d+$/;
 | ||
| 		$.each(elem.attributes, function(i, attr) {
 | ||
| 			if (attr.specified && !rinlinejQuery.test(attr.name)) {
 | ||
| 				newAttrs[attr.name] = attr.value;
 | ||
| 			}
 | ||
| 		});
 | ||
| 		return newAttrs;
 | ||
| 	}
 | ||
| 
 | ||
| 	function clearPlaceholder(event, value) {
 | ||
| 		var input = this;
 | ||
| 		var $input = $(input);
 | ||
| 		if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
 | ||
| 			if ($input.data('placeholder-password')) {
 | ||
| 				$input = $input.hide().nextAll('input[type="password"]:first').show().attr('id', $input.removeAttr('id').data('placeholder-id'));
 | ||
| 				// If `clearPlaceholder` was called from `$.valHooks.input.set`
 | ||
| 				if (event === true) {
 | ||
| 					return $input[0].value = value;
 | ||
| 				}
 | ||
| 				$input.focus();
 | ||
| 			} else {
 | ||
| 				input.value = '';
 | ||
| 				$input.removeClass('placeholder');
 | ||
| 				input == safeActiveElement() && input.select();
 | ||
| 			}
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	function setPlaceholder() {
 | ||
| 		var $replacement;
 | ||
| 		var input = this;
 | ||
| 		var $input = $(input);
 | ||
| 		var id = this.id;
 | ||
| 		if (input.value === '') {
 | ||
| 			if (input.type === 'password') {
 | ||
| 				if (!$input.data('placeholder-textinput')) {
 | ||
| 					try {
 | ||
| 						$replacement = $input.clone().attr({ 'type': 'text' });
 | ||
| 					} catch(e) {
 | ||
| 						$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
 | ||
| 					}
 | ||
| 					$replacement
 | ||
| 						.removeAttr('name')
 | ||
| 						.data({
 | ||
| 							'placeholder-password': $input,
 | ||
| 							'placeholder-id': id
 | ||
| 						})
 | ||
| 						.bind('focus.placeholder', clearPlaceholder);
 | ||
| 					$input
 | ||
| 						.data({
 | ||
| 							'placeholder-textinput': $replacement,
 | ||
| 							'placeholder-id': id
 | ||
| 						})
 | ||
| 						.before($replacement);
 | ||
| 				}
 | ||
| 				$input = $input.removeAttr('id').hide().prevAll('input[type="text"]:first').attr('id', id).show();
 | ||
| 				// Note: `$input[0] != input` now!
 | ||
| 			}
 | ||
| 			$input.addClass('placeholder');
 | ||
| 			$input[0].value = $input.attr('placeholder');
 | ||
| 		} else {
 | ||
| 			$input.removeClass('placeholder');
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	function safeActiveElement() {
 | ||
| 		// Avoid IE9 `document.activeElement` of death
 | ||
| 		// https://github.com/mathiasbynens/jquery-placeholder/pull/99
 | ||
| 		try {
 | ||
| 			return document.activeElement;
 | ||
| 		} catch (exception) {}
 | ||
| 	}
 | ||
| 
 | ||
| }(this, document, jQuery));
 |