jquery-pwd-measure
Version:
jQuery plugin to measure the strength of the password.
328 lines (236 loc) • 8.8 kB
Markdown
jquery-pwd-measure
================
[](https://travis-ci.org/tsuyoshiwada/jquery-pwd-measure)
[](https://www.npmjs.com/package/jquery-pwd-measure)
[](http://bower.io/search/?q=jquery-pwd-measure)
パスワードの強度を測定して表示するためのjQueryプラグインです。
[](http://tsuyoshiwada.github.io/jquery-pwd-measure/)
`PwdMeasure`の特徴は下記のとおりです。
* パスワードの強度をパーセント表示可能
* 単一の入力フィールド、確認フィールドへの対応
* 強度を示すラベルを詳細に設定可能
* 必要最低限のパスワード強度をパーセント指定可能
* 判定をクリアした時、値が変わった時などのコールバックをサポート
* スタイルシートで自由にデザインを変更可能
```
$ npm install jquery-pwd-measure --save
```
```
$ bower install jquery-pwd-measure --save
```
```html
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="js/jquery.pwdMeasure.min.js"></script>
```
```html
<input type="password" id="pwd" name="pwd" value="" placeholder="Your Password">
<p id="pm-indicator"></p>
```
```javascript
$(document).ready(function(){
$("#pwd").pwdMeasure();
});
```
```javascript
// Default Options
{
minScore: 50,
minLength: 6,
events: "keyup change",
labels: [
{score:10, label:"とても弱い", className:"very-weak"}, //0~10%
{score:30, label:"弱い", className:"weak"}, //11~30%
{score:50, label:"平均", className:"average"}, //31~50%
{score:70, label:"強い", className:"strong"}, //51~70%
{score:100, label:"とても強い", className:"very-strong"}, //71~100%
{score:"notMatch", label:"不一致", className:"not-match"}, //not match
{score:"empty", label:"未入力", className:"empty"} //empty
],
indicator: "#pm-indicator",
indicatorTemplate: "パスワード強度: <%= label %> (<%= percentage %>%)",
confirm: false,
// Callbacks
onValid: false,
onInvalid: false,
onNotMatch: false,
onEmpty: false,
onChangeState: false,
onChangeValue: false
}
```
**Default: `50`**
**Type: `integer`**
最低限必要な強度を0~100のパーセントで指定します。
**Default: `6`**
**Type: `integer`**
最低限必要な文字数を指定します。
ここで指定した文字数と`minScore`の値から入力されたパスワードの強度を求めます。
**Default: `keyup change`**
**Type: `string`**
指定したイベントで強度判定を行います。
**Type: `array`**
**Default:**
強度を示すラベルを配列で指定します。
```javascript
[
{score:10, label:"とても弱い", className:"very-weak"}, //0~10%
{score:30, label:"弱い", className:"weak"}, //11~30%
{score:50, label:"平均", className:"average"}, //31~50%
{score:70, label:"強い", className:"strong"}, //51~70%
{score:100, label:"とても強い", className:"very-strong"}, //71~100%
{score:"notMatch", label:"不一致", className:"not-match"}, //not match
{score:"empty", label:"未入力", className:"empty"} //empty
]
```
キーに対応する役割は下記のとおりです。
`indicator`オプションを指定した場合、自動的にラベル、クラスが適用されます。
また、コールバック内で取得出来ます。
* `score`: 該当する範囲をパーセント(整数)指定 `0~100` or `"notMatch"`
* `label`: 対応するラベル `string`
* `className`: 対応するクラス名 `string`
`score`には例外が存在します。それぞれのルールは下記のとおりです。
| key | rule |
| :------------ | :-------------------------------------------------------- |
| `"notMatch"` | メイン、確認用フィールドの値が違う場合 |
| `"empty"` | メイン、確認用フィールドのどちらも空の場合 |
**Type: `string | jQueryObj | DOM Elements`**
**Default: `
強度を示すラベルを表示する要素を指定します。
**Type: `string | jQueryObj | DOM Elements`**
**Default: `パスワード強度: <%= label %> (<%= percentage %>%)`**
強度を示すラベルを表示する`<%= キー %>`形式で指定します。
使用できるキーは下記です。
* `label`
* `className`
* `percentage`
**Type: `string | jQueryObj | DOM Elements`**
**Default: `false`**
確認用のフィールドを指定します。確認用フィールドを指定することで、
パスワードが一致しているかどうかの判定も行ないます。
**Default: `false`**
**Type: `function`**
強度が`minScore`の値を上回ったらコールされます。
**Default: `false`**
**Type: `function`**
強度が`minScore`の値を上回った後、再び`minScore`よりも低い値になった際にコールされます。
**Default: `false`**
**Type: `function`**
メインの入力フィールドと、確認用フィールドの値が異なる際にコールされます。
毎回のイベント時に呼ばれるのでは無く、内部的なステータス値が変更されたタイミングを採用します。
**Default: `false`**
**Type: `function`**
メインの入力フィールドと、確認用フィールドのどちらも値が空の時コールされます。
**Default: `false`**
**Type: `function`**
`onValid`, `onInvalid`, `onNotMatch`のタイミングでコールされます。
**Default: `false`**
**Type: `function`**
パスワードの値が変更される度にコールされます。
※実際の値の変化では無く、`events`オプションで指定したイベント実行の度にコールされます。
`jQuery.pwdMeasure.js`では、スタイルを柔軟に設定することが出来ます。
このページで強度表示に使用しているスタイルは次のとおりです。是非参考にしてみてください。
```css
.pm-indicator {
margin:10px 0;
padding:1.5em 1em;
color:
font-size:12px;
text-align:center;
border:1px solid
border-radius:2px;
background:
text-shadow:1px 1px 0 rgba(255,255,255,.8);
-webkit-transition:all .2s ease-in-out;
transition:all .2s ease-in-out;
}
.pm-indicator.very-weak,
.pm-indicator.not-match {
border-color:
background-color:
}
.pm-indicator.weak {
border-color:
background-color:
}
.pm-indicator.strong {
border-color:
background-color:
}
.pm-indicator.very-strong {
border-color:
background-color:
}
```
```scss
.pm-indicator {
margin:10px 0;
padding:1.5em 1em;
background:
border:1px solid
border-radius:2px;
color:
font-size:12px;
text-shadow:1px 1px 0 rgba(255, 255, 255, .8);
text-align:center;
transition:all .2s ease-in-out;
&.very-weak,
&.not-match {
background-color:
border-color:
}
&.weak {
background-color:
border-color:
}
&.average {
}
&.strong {
background-color:
border-color:
}
&.very-strong {
background-color:
border-color:
}
}
```
jQuery 1.7.2 +
以下、優先順位順。
1. <del>テストを書く</del>
2. <del>デモページの移行 (Github上に作成)</del>
3. コールバックとは別にイベントを提供する
4. 文字列から、強度を測定するグローバルAPIを提供
5. CSSのテーマを作成 (オプションで選択できるようにする予定)
Released under the [MIT Licence](https://raw.githubusercontent.com/tsuyoshiwada/jquery-pwd-measure/master/LICENSE)
[](https://github.com/tsuyoshiwada/)