Download
Demo
- Overview
- Documents
User Rating: 0/5 ( 0 votes)
Your Rating:
hideShowPassword lets you easily hide and show passwords via JavaScript or a nifty inset toggle.
Source: blog.cloudfour.com
1. INCLUDE JS FILES
<!-- including the jQuery dependency --> <script src="vendor/jquery.min.js"></script> <!-- including the plugin --> <script src="hideShowPassword.min.js"></script>
2. HTML
<input id="password-1" type="password" placeholder="Password">
3. JAVASCRIPT
$('#password-1').hidePassword(true);
You can quickly show, hide or toggle the visibility of the field's contents:
$('#password').showPassword(); // Reveal $('#password').hidePassword(); // Hide $('#password').togglePassword(); // Toggle
4. OPTIONS
.hideShowPassword({ // Visibility of the password text. Can be true, false, 'toggle' // or 'infer'. If 'toggle', it will be the opposite of whatever // it currently is. If 'infer', it will be based on the input // type (false if 'password', otherwise true). show: 'infer', // Set to true to create an inner toggle for this input. Can // also be sent to an event name to delay visibility of toggle // until that event is triggered on the input element. innerToggle: false, // If false, the plugin will be disabled entirely. Set to // the outcome of a test to insure input attributes can be // set after input has been inserted into the DOM. enable: canSetInputAttribute, // Class to add to input element when the plugin is enabled. className: 'hideShowPassword-field', // Event to trigger when the plugin is initialized and enabled. initEvent: 'hideShowPasswordInit', // Event to trigger whenever the visibility changes. changeEvent: 'passwordVisibilityChange', // Properties to add to the input element. props: { autocapitalize: 'off', autocomplete: 'off', autocorrect: 'off', spellcheck: 'false' }, // Options specific to the inner toggle. toggle: { // The element to create. element: '<button type="button">', // Class name of element. className: 'hideShowPassword-toggle', // Whether or not to support touch-specific enhancements. // Defaults to the value of Modernizr.touch if available, // otherwise false. touchSupport: (typeof Modernizr === 'undefined') ? false : Modernizr.touch, // Non-touch event to bind to. attachToEvent: 'click', // Event to bind to when touchSupport is true. attachToTouchEvent: 'touchstart mousedown', // Key event to bind to if attachToKeyCodes is an array // of at least one keycode. attachToKeyEvent: 'keyup', // Key codes to bind the toggle event to for accessibility. // If false, this feature is disabled entirely. // If true, the array of key codes will be determined based // on the value of the element option. attachToKeyCodes: true, // Styles to add to the toggle element. Does not include // positioning styles. styles: { position: 'absolute' }, // Styles to add only when touchSupport is true. touchStyles: { pointerEvents: 'none' }, // Where to position the inner toggle relative to the // input element. Can be 'right', 'left' or 'infer'. If // 'infer', it will be based on the text-direction of the // input element. position: 'infer', // Where to position the inner toggle on the y-axis // relative to the input element. Can be 'top', 'bottom' // or 'middle'. verticalAlign: 'middle', // Amount by which to "offset" the toggle from the edge // of the input element. offset: 0, // Attributes to add to the toggle element. attr: { role: 'button', 'aria-label': 'Show Password', tabIndex: 0 } }, // Options specific to the wrapper element, created // when the innerToggle is initialized to help with // positioning of that element. wrapper: { // The element to create. element: '<div>', // Class name of element. className: 'hideShowPassword-wrapper', // If true, the width of the wrapper will be set // unless it is already the same width as the inner // element. If false, the width will never be set. Any // other value will be used as the width. enforceWidth: true, // Styles to add to the wrapper element. Does not // include inherited styles or width if enforceWidth // is not false. styles: { position: 'relative' }, // Styles to "inherit" from the input element, allowing // the wrapper to avoid disrupting page styles. inheritStyles: [ 'display', 'verticalAlign', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft' ], // Styles for the input element when wrapped. innerElementStyles: { marginTop: 0, marginRight: 0, marginBottom: 0, marginLeft: 0 } }, // Options specific to the 'shown' or 'hidden' // states of the input element. states: { shown: { className: 'hideShowPassword-shown', changeEvent: 'passwordShown', props: { type: 'text' }, toggle: { className: 'hideShowPassword-toggle-hide', content: 'Hide', attr: { 'aria-pressed': 'true' } } }, hidden: { className: 'hideShowPassword-hidden', changeEvent: 'passwordHidden', props: { type: 'password' }, toggle: { className: 'hideShowPassword-toggle-show', content: 'Show', attr: { 'aria-pressed': 'false' } } } } });
5. EVENTS
$('#password') .on('hideShowPasswordInit', function(){ console.log('plugin initialized'); }) .on('passwordVisibilityChange', function(){ console.log('password shown or hidden'); }) .on('passwordShown', function(){ console.log('password shown'); }) .on('passwordHidden', function(){ console.log('password hidden'); });