]> git.mxchange.org Git - friendica-addons.git/blobdiff - jappixmini/jappix/js/jquery.placeholder.js
jappixmini: include jappix source
[friendica-addons.git] / jappixmini / jappix / js / jquery.placeholder.js
diff --git a/jappixmini/jappix/js/jquery.placeholder.js b/jappixmini/jappix/js/jquery.placeholder.js
new file mode 100644 (file)
index 0000000..834bda6
--- /dev/null
@@ -0,0 +1,116 @@
+(function($) {
+       $.extend({
+               placeholder : {
+                       settings : {
+                               focusClass: 'placeholderFocus',
+                               activeClass: 'placeholder',
+                               overrideSupport: false,
+                               preventRefreshIssues: true
+                       },
+                       debug : false,
+                       log : function(msg){
+                               if(!$.placeholder.debug) return;
+                               msg = "[Placeholder] " + msg;
+                               $.placeholder.hasFirebug ?
+                               console.log(msg) :
+                               $.placeholder.hasConsoleLog ?
+                                       window.console.log(msg) :
+                                       alert(msg);
+                       },
+                       hasFirebug : "console" in window && "firebug" in window.console,
+                       hasConsoleLog: "console" in window && "log" in window.console
+               }
+
+       });
+
+    // check browser support for placeholder
+    $.support.placeholder = 'placeholder' in document.createElement('input');
+
+       // Replace the val function to never return placeholders
+       $.fn.plVal = $.fn.val;
+       $.fn.val = function(value) {
+               $.placeholder.log('in val');
+               if(this[0]) {
+                       $.placeholder.log('have found an element');
+                       var el = $(this[0]);
+                       if(value != undefined)
+                       {
+                               $.placeholder.log('in setter');
+                               var currentValue = el.plVal();
+                               var returnValue = $(this).plVal(value);
+                               if(el.hasClass($.placeholder.settings.activeClass) && currentValue == el.attr('placeholder')){
+                                       el.removeClass($.placeholder.settings.activeClass);
+                               }
+                               return returnValue;
+                       }
+
+                       if(el.hasClass($.placeholder.settings.activeClass) && el.plVal() == el.attr('placeholder')) {
+                               $.placeholder.log('returning empty because its a placeholder');
+                               return '';
+                       } else {
+                               $.placeholder.log('returning original val');
+                               return el.plVal();
+                       }
+               }
+               $.placeholder.log('returning undefined');
+               return undefined;
+       };
+
+       // Clear placeholder values upon page reload
+       $(window).bind('beforeunload.placeholder', function() {
+               var els = $('input.placeholderActive' );
+               if(els.length > 0)
+                       els.val('').attr('autocomplete','off');
+       });
+
+
+    // plugin code
+       $.fn.placeholder = function(opts) {
+               opts = $.extend({},$.placeholder.settings, opts);
+
+               // we don't have to do anything if the browser supports placeholder
+               if(!opts.overrideSupport && $.support.placeholder)
+                   return this;
+                       
+        return this.each(function() {
+            var $el = $(this);
+
+            // skip if we do not have the placeholder attribute
+            if(!$el.is('[placeholder]'))
+                return;
+
+            // we cannot do password fields, but supported browsers can
+            if($el.is(':password'))
+                return;
+                       
+                       // Prevent values from being reapplied on refresh
+                       if(opts.preventRefreshIssues)
+                               $el.attr('autocomplete','off');
+
+            $el.bind('focus.placeholder', function(){
+                var $el = $(this);
+                if(this.value == $el.attr('placeholder') && $el.hasClass(opts.activeClass))
+                    $el.val('')
+                       .removeClass(opts.activeClass)
+                       .addClass(opts.focusClass);
+            });
+            $el.bind('blur.placeholder', function(){
+                var $el = $(this);
+                               
+                               $el.removeClass(opts.focusClass);
+
+                if(this.value == '')
+                  $el.val($el.attr('placeholder'))
+                     .addClass(opts.activeClass);
+            });
+
+            $el.triggerHandler('blur');
+                       
+                       // Prevent incorrect form values being posted
+                       $el.parents('form').submit(function(){
+                               $el.triggerHandler('focus.placeholder');
+                       });
+
+        });
+    };
+})(jQuery);