Blame view
sources/core/js/jquery-showpassword.js
3.16 KB
|
03e52840d
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/*
* @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'),
'autocomplete' : 'off'
});
|
|
31b7f2792
|
41 42 43 44 |
if($element.attr('placeholder') !== undefined) {
$clone.attr('placeholder', $element.attr('placeholder'));
}
|
|
03e52840d
|
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
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 );
// set type of password field clone (type=text) to password right on submit
// to prevent browser save the value of this field
$clone.closest('form').submit(function(e) {
// .prop has to be used, because .attr throws
// an error while changing a type of an input
// element
$clone.prop('type', 'password');
});
if( callback.fn ){
callback.fn( callback.args );
}
});
}
});
})(jQuery);
|