jQuery password meter plugin
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist
lib
src
test
.gitattributes
.gitignore
.jshintrc
README.md
bower.json
gruntfile.js
index.html
package.json

README.md

jQuery Entropizer

Password strength meter jQuery plugin

For the standalone Entropizer engine, click here

What is jQuery Entropizer?

jQuery Entropizer is a simple, lightweight jQuery plugin that uses the Entropizer engine to calculate password entropy. It's easy to set up and provides several hooks to customize the UI.

jQuery Entropizer supports AMD and CommonJS. It is available as a bower component.

Demos

Some basic demos can be found here.

Getting Started

This plugin requires both jQuery (1.7.2+) and Entropizer.

Basic usage:

<label for="pwd">Please enter a password</label>
<input type="password" id="pwd" name="pwd" />
<div id="meter"></div>
// Creates a default Entropizer meter inside #meter and watches the first password field on the
// page by default
$('#meter').entropizer();

Options and examples:

// Create an Entropizer meter using custom options
$('#meter').entropizer({

	// The input field to watch: any selector, DOM element or jQuery instance
	// Default: 'input[type=password]:first'
	target: '#pwd',
	
	// The event(s) upon which to update the meter UI
	// Default: 'keydown keyup'
	on: 'keydown',

	// Used to calculate the percentage of the bar to fill (see map function below)
	// Default: 100
	maximum: 80,

	// An array of ranges to use when classifying password strength. Used internally by default map
	// function and can be used publicly via $.entropizer.classify(value, buckets). Properties
	// 'min' and 'max' are used to calculate which bucket to use - upon finding a match, an object
	// containing all the other properties is returned, e.g. below, a value of 42 returns
	// { message: ':)' }
	// Default: 4 ranges with strength and color properties (see source for values)
	buckets: [
		{ max: 40, message: ':(' },
		{ min: 40, max: 60, message: ':)' },
		{ min: 60, message: ':D' }
	],

	// Either an Entropizer engine options object or an Entropizer instance
	// Default: a new Entropizer instance with default settings
	engine: {
		classes: ['lowercase', 'uppercase', 'numeric']
	},

	// A callback controlling UI creation - takes a jQuery instance representing the container
	// and returns an object containing UI components for access in update and destroy
	// Default: creates a track element (the bar background), a bar element and a text element
	create: function(container) {
		var bar = $('<div>').appendTo(container);
		return { foo: bar };
	},
	
	// A callback controlling UI cleanup - takes the UI object created by create
	// Default: removes the track, bar and text elements
	destroy: function(ui) {
		ui.foo.remove();
	},

	// A callback that maps the raw entropy value to an object passed to update. First argument is
	// the number of bits of entropy, second argument is an object containing all properties on
	// the options object apart from target, on, engine and the callbacks (i.e. by default, just
	// maximum and buckets)
	// Default: uses maximum and buckets above to return an object with entropy, percent, strength
	// and color properties
	map: function(entropy, mapOptions) {
		return $.extend({ entropy: entropy }, $.entropizer.classify(entropy, mapOptions.buckets));
	},

	// A callback controlling UI updates - takes the data returned by map and the ui object
	// Default: updates the width and background color of the bar, and displays the number of bits
	update: function(data, ui) {
		ui.foo.text(data.entropy.toFixed(0) + ' ' + data.message);
	}
});

If you need to remove an entropizer instance:

$('#meter').entropizer('destroy');

This will unbind all Entropizer events from the target and invoke the destroy callback.

Styling

The default UI creates elements for the track, bar and text - these use the CSS classes entropizer-track, entropizer-bar and entropizer-text respectively. Default styles for these elements can be found in the provided CSS stylesheet.

Engine options

For a guide to Entropizer engine options, see the readme here.

Browser compatibility

jQuery Entropizer supports IE6+, Firefox, Chrome and Opera.