diff options
author | Jan-Christoph Borchardt <JanCBorchardt@fsfe.org> | 2011-08-12 11:26:13 +0200 |
---|---|---|
committer | Jan-Christoph Borchardt <JanCBorchardt@fsfe.org> | 2011-08-12 11:26:13 +0200 |
commit | 6c4d075bd656497e793c230818c53fa085cbbbf9 (patch) | |
tree | 55aff5d2c17074056998537eb441227ff64d9cd5 /core/js/jquery-showpassword.js | |
parent | 3747ba928ff573a8c50943ac8748ec2c24cbba09 (diff) | |
download | nextcloud-server-6c4d075bd656497e793c230818c53fa085cbbbf9.tar.gz nextcloud-server-6c4d075bd656497e793c230818c53fa085cbbbf9.zip |
added jquery-tipsy for nice title tooltips
Diffstat (limited to 'core/js/jquery-showpassword.js')
-rw-r--r-- | core/js/jquery-showpassword.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/core/js/jquery-showpassword.js b/core/js/jquery-showpassword.js new file mode 100644 index 00000000000..0f4678327a3 --- /dev/null +++ b/core/js/jquery-showpassword.js @@ -0,0 +1,113 @@ +/* +* @name Show Password +* @descripton +* @version 1.3 +* @requires Jquery 1.5 +* +* @author Jan Jarfalk +* @author-email jan.jarfalk@unwrongest.com +* @author-website http://www.unwrongest.com +* +* @special-thanks Michel Gratton +* +* @licens MIT License - http://www.opensource.org/licenses/mit-license.php +*/ +(function($){ + $.fn.extend({ + showPassword: function(c) { + + // Setup callback object + var callback = {'fn':null,'args':{}} + callback.fn = c; + + // Clones passwords and turn the clones into text inputs + var cloneElement = function( element ) { + + var $element = $(element); + + $clone = $("<input />"); + + // Name added for JQuery Validation compatibility + // Element name is required to avoid script warning. + $clone.attr({ + 'type' : 'text', + 'class' : $element.attr('class'), + 'style' : $element.attr('style'), + 'size' : $element.attr('size'), + 'name' : $element.attr('name')+'-clone', + 'tabindex' : $element.attr('tabindex') + }); + + return $clone; + + }; + + // Transfers values between two elements + var update = function(a,b){ + b.val(a.val()); + }; + + // Shows a or b depending on checkbox + var setState = function( checkbox, a, b ){ + + if(checkbox.is(':checked')){ + update(a,b); + b.show(); + a.hide(); + } else { + update(b,a); + b.hide(); + a.show(); + } + + }; + + return this.each(function() { + + var $input = $(this), + $checkbox = $($input.data('typetoggle')); + + // Create clone + var $clone = cloneElement($input); + $clone.insertAfter($input); + + // Set callback arguments + if(callback.fn){ + callback.args.input = $input; + callback.args.checkbox = $checkbox; + callback.args.clone = $clone; + } + + + + $checkbox.bind('click', function() { + setState( $checkbox, $input, $clone ); + }); + + $input.bind('keyup', function() { + update( $input, $clone ) + }); + + $clone.bind('keyup', function(){ + update( $clone, $input ); + + // Added for JQuery Validation compatibility + // This will trigger validation if it's ON for keyup event + $input.trigger('keyup'); + + }); + + // Added for JQuery Validation compatibility + // This will trigger validation if it's ON for blur event + $clone.bind('blur', function() { $input.trigger('focusout'); }); + + setState( $checkbox, $input, $clone ); + + if( callback.fn ){ + callback.fn( callback.args ); + } + + }); + } + }); +})(jQuery); |