UNPKG

jquery-pwd-measure

Version:

jQuery plugin to measure the strength of the password.

527 lines (448 loc) 20 kB
doctype html html head meta(charset="utf-8") meta(http-equiv="X-UA-Compatible", content="IE=edge") meta(name="description", content="jQuery.pwdMeasure.jsはパスワードの強度を測定するjQueryプラグインです。") meta(name="keywords", content="jQuery, パスワード, 強度, プラグイン, jQuery.pwdMeasure.js") meta(property="og:locale", content="ja_JP") meta(property="og:type", content="website") meta(property="og:title", content="jQuery.pwdMeasure.js") meta(property="og:description", content="jQuery.pwdMeasure.jsはパスワードの強度を測定するjQueryプラグインです。") meta(property="og:url", content="http://tsuyoshiwada.github.io/jquery-pwd-measure/") meta(property="og:site_name", content="jQuery.pwdMeasure.js") title jQuery.pwdMeasure.js meta(name="viewport", content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no") link(rel="stylesheet", href="./js/google-code-prettify/prettify.css") link(rel="stylesheet", href="./css/style.css") body #fb-root script. (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v2.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); a.gh-ribbons(href="https://github.com/tsuyoshiwada/jquery-pwd-measure") img(style="position: absolute; top: 0; right: 0; border: 0;", src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67", alt="Fork me on GitHub", data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png") div.hero div.container h1 i.fa.fa-code | jQuery.pwdMeasure.js p jQuery.pwdMeasure.js is jQuery plug-in that measure the strength of the password. ul.list-inline li a.btn.btn--hero(href="https://raw.githubusercontent.com/tsuyoshiwada/jquery-pwd-measure/master/jquery.pwdMeasure.min.js", download) i.fa.fa-download | Download li a.btn.btn--hero(href="https://github.com/tsuyoshiwada/jquery-pwd-measure") i.fa.fa-github | Github //- Shares div.shares a.twitter-share-button(href='https://twitter.com/share', data-url='http://tsuyoshiwada.github.io/jquery-pwd-measure/', data-lang='ja') &#x30C4;&#x30A4;&#x30FC;&#x30C8; script. !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); div.fb-like(data-layout="button_count") a.hatena-bookmark-button(href='http://b.hatena.ne.jp/entry/http://tsuyoshiwada.github.io/jquery-pwd-measure/', data-hatena-bookmark-title='jQuery.pwdMeasure.js', data-hatena-bookmark-layout='simple-balloon', title='このエントリーをはてなブックマークに追加') img(src='https://b.st-hatena.com/images/entry-button/button-only@2x.png', alt='このエントリーをはてなブックマークに追加', width='20', height='20', style='border: none;') script(type='text/javascript', src='https://b.st-hatena.com/js/bookmark_button.js', charset='utf-8', async='async') a.pocket-btn(data-pocket-label='pocket', data-pocket-count='horizontal', data-lang='en') script(type='text/javascript'). !function(d,i){if(!d.getElementById(i)){var j=d.createElement("script");j.id=i;j.src="https://widgets.getpocket.com/v1/j/btn.js?v=1";var w=d.getElementById(i);d.body.appendChild(j);}}(document,"pocket-btn-js"); //- Shares div.container.contents div.section h2.section__title i.fa.fa-hand-o-right | Demo div.form-group label.form-group__label(for="demo-pm-input") パスワード input#demo-pm-input.form-group__input(type="password", value="", placeholder="Your password") div#demo-pm-indicator.pm-indicator div.section h2.section__title i.fa.fa-paragraph | Description p <code>jQuery.pwdMeasure.js</code>はパスワードの強度を測定する<code>jQuery</code>プラグインです。 p 主な特徴は下記の通りです。 ul li パスワードの強度をパーセント表示可能 li 単一の入力フィールド、確認フィールドへの対応 li 強度を示すラベルを詳細に設定可能 li 必要最低限のパスワード強度をパーセント指定可能 li 判定をクリアした時、値が変わった時などのコールバックをサポート div.section h2.section__title i.fa.fa-rocket | How To Use h3 Install p いつも通り<code>script</code>タグで読み込む方法以外に、<code>Bower</code>と<code>npm</code>でのインストールをサポートしています。 h4 npm div.show-code button.show-code__copy Copy :markdown ``` $ npm install jquery-pwd-measure ``` h4 Bower small ※非推奨, 更新の予定はありません div.show-code button.show-code__copy Copy :markdown ``` $ bower install jquery-pwd-measure ``` h4 script div.show-code button.show-code__copy Copy :markdown ```html <script type="text/javascript" src="./jquery-1.11.1.min.js"></script> <script type="text/javascript" src="./jquery.pwdMeasure.min.js"></script> ``` h3 Basic h4 HTML div.show-code button.show-code__copy Copy :markdown ```html <input type="password" id="pm-input" value="" placeholder="Your Password"> <div id="pm-indicator"></div> ``` h4 JavaScript div.show-code button.show-code__copy Copy :markdown ```js $(document).ready(function(){ $("#pm-input").pwdMeasure(); }); ``` div.section h2.section__title i.fa.fa-dot-circle-o | Examples h3 Basic p | 最も基本的な使い方です。単一の入力フィールドに対して、強度判定を行ないます。<br /> | デフォルトで<code>#pm-indicator</code>に強度が表示されます。 div.form-group label.form-group__label(for="pm-input") パスワード input#pm-input.form-group__input(type="password", value="", placeholder="Your password") div#pm-indicator.pm-indicator div.show-code button.show-code__copy Copy :markdown ```js $("#pm-input").pwdMeasure(); ``` h3 Confirm p | <code>confirm</code>オプションで確認用のフィールドを指定した例です。確認用のフィールドがある場合は、値が一致しているかのチェックも行ないます。 div.form-group label.form-group__label(for="pm-input2") パスワード input#pm-input2.form-group__input(type="password", value="", placeholder="Your password") div.form-group label.form-group__label(for="pm-confirm2") パスワード確認 input#pm-confirm2.form-group__input(type="password", value="", placeholder="Your password") div#pm-indicator2.pm-indicator div.show-code button.show-code__copy Copy :markdown ```js $("#pm-input2").pwdMeasure({ indicator: "#pm-indicator2", confirm: "#pm-input-confirm2" }); ``` h3 Change Labels p 表示ラベルを変更する例です。 div.form-group label.form-group__label(for="pm-input3") パスワード input#pm-input3.form-group__input(type="password", value="", placeholder="Your password") div#pm-indicator3.pm-indicator div.show-code button.show-code__copy Copy :markdown ```js $("#pm-input3").pwdMeasure({ indicator: "#pm-indicator3", indicatorTemplate: "<%= label %>", labels: [ {score:10, label:"Level 1", className:"very-weak"}, {score:30, label:"Level 2", className:"weak"}, {score:50, label:"Level 3", className:"average"}, {score:70, label:"Level 4", className:"strong"}, {score:100, label:"Max!!", className:"very-strong"} ] }); ``` h3 Change Events p 強度判定を行うタイミングを決める為のイベントを変更することが出来ます。下記では<code>change</code>のみに絞っています。 div.form-group label.form-group__label(for="pm-input4") パスワード input#pm-input4.form-group__input(type="password", value="", placeholder="Your password") div#pm-indicator4.pm-indicator div.show-code button.show-code__copy Copy :markdown ```js $("#pm-input4").pwdMeasure({ indicator: "#pm-indicator4", events: "change" }); ``` h3 Use Callback p | コールバックを使用して、パスワードが一定の強度より低い場合はフォームの送信を止める例です。<br /> | 下記では強度を示すパーセントが50以下の場合送信をキャンセルします。 form#pm-form5 div.form-group label.form-group__label(for="pm-input5") パスワード input#pm-input5.form-group__input(type="password", value="", placeholder="Your password") div.form-group label.form-group__label(for="pm-confirm5") パスワード input#pm-confirm5.form-group__input(type="password", value="", placeholder="Your password") div#pm-indicator5.pm-indicator div.text-center button.btn.btn--primary(type="submit") Submit! div.show-code button.show-code__copy Copy :markdown ```js var $form = $("#pm-form5"); // submitイベントをキャンセル function formCancelSubmit(){ $form.off("submit").on("submit", function(e){ alert("パスワードが一致しないか基準値に達していません!"); e.preventDefault(); }); } formCancelSubmit(); // コールバックを使用する $("#pm-input5").pwdMeasure({ minScore: 50, confirm: "#pm-confirm5", indicator: "#pm-indicator5", onValid: function(percentage, label, className){ $form.off("submit"); }, onInvalid: function(percentage, label, className){ formCancelSubmit(); } }); ``` div.section h2.section__title i.fa.fa-code | Default Options p オプションを指定せずに実行した場合、下記のオプションが適用されます。各オプションの詳細は<a href="https://github.com/tsuyoshiwada/jquery-pwd-measure">リポジトリ</a>にてご確認下さい。 div.show-code button.show-code__copy Copy :markdown ```js $(selector).pwdMeasure({ 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 }); ``` div.section h2.section__title i.fa.fa-file-code-o | CSS Example p | <code>jQuery.pwdMeasure.js</code>では、スタイルを柔軟に設定することが出来ます。<br /> | このページで強度表示に使用しているスタイルは次のとおりです。是非参考にしてみてください。 h3 CSS div.show-code button.show-code__copy Copy :markdown ```css .pm-indicator { margin:10px 0; padding:1.5em 1em; color:#2c3e50; font-size:12px; text-align:center; border:1px solid #ccc; border-radius:2px; background:#e4e4e4; 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:#be1d30; background-color:#ffc3cf; } .pm-indicator.weak { border-color:#ff787d; background-color:#ffe6e5; } .pm-indicator.strong { border-color:#78bc42; background-color:#bceea6; } .pm-indicator.very-strong { border-color:#4f85a7; background-color:#68c6d7; } ``` h3 Scss div.show-code button.show-code__copy Copy :markdown ```css .pm-indicator { margin:10px 0; padding:1.5em 1em; background:#e4e4e4; border:1px solid #ccc; border-radius:2px; color:#2c3e50; 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:#ffc3cf; border-color:#be1d30; } &.weak { background-color:#ffe6e5; border-color:#ff787d; } &.average { } &.strong { background-color:#bceea6; border-color:#78bc42; } &.very-strong { background-color:#68c6d7; border-color:#4f85a7; } } ``` div.section h2.section__title i.fa.fa-bell-o | Change Log h3 | v1.0.5 small 2017.04.2504 p 非推奨になっていた<code>.size()</code>を<code>.length</code>に変更。(<a href="https://github.com/tsuyoshiwada/jquery-pwd-measure/pull/1">#1</a>) h3 | v1.0.4 small 2015.06.13 p IE8以下で起きるエラーの修正。(<code>labels</code>内の<code>class</code>を<code>className</code>に変更しています) h3 | v1.0.2 small 2015.02.14 p <code>bower</code>を使ったインストールに対応 &amp; <code>empty</code>オプションの追加 h3 | v1.0.0 small 2015.01.24 p First Release. div.footer p.copyright <a href="https://github.com/tsuyoshiwada">tsuyoshiwada</a> Copyright © All Right Reserved. script(type="text/javascript", src="./js/google-code-prettify/prettify.js") script(type="text/javascript", src="./js/zeroclipboard-2.2.0/ZeroClipboard.min.js") script(type="text/javascript", src="./js/jquery-1.11.1.min.js") script(type="text/javascript", src="./js/jquery.pwdMeasure.js") script. $(function(){ // syntax highlight $(".show-code").each(function(){ $("code", this).addClass("prettyprint"); }); prettyPrint(); // copy button $(".show-code__copy").each(function(){ var $this = $(this); $this.attr("data-clipboard-text", $this.parent().find("code").text()); var client = new ZeroClipboard($this); //- client.on("ready", function(){ //- console.log("hhghgh"); //- }); }); // demo $("#demo-pm-input").pwdMeasure({ indicator: "#demo-pm-indicator" }); // basic $("#pm-input").pwdMeasure(); // confirm $("#pm-input2").pwdMeasure({ indicator: "#pm-indicator2", confirm: "#pm-confirm2" }); // change labels $("#pm-input3").pwdMeasure({ indicator: "#pm-indicator3", indicatorTemplate: "<%= label %>", labels: [ {score:10, label:"Level 1", className:"very-weak"}, {score:30, label:"Level 2", className:"weak"}, {score:50, label:"Level 3", className:"average"}, {score:70, label:"Level 4", className:"strong"}, {score:100, label:"Max!!", className:"very-strong"} ] }); // change events $("#pm-input4").pwdMeasure({ indicator: "#pm-indicator4", events: "change" }); // use callback (function(){ var $form = $("#pm-form5"); // submitイベントをキャンセル function formCancelSubmit(){ $form.off("submit").on("submit", function(e){ alert("パスワードが一致しないか基準値に達していません!"); e.preventDefault(); }); } formCancelSubmit(); // コールバックを使用する $("#pm-input5").pwdMeasure({ minScore: 50, confirm: "#pm-confirm5", indicator: "#pm-indicator5", onValid: function(percentage, label, className){ $form.off("submit"); }, onInvalid: function(percentage, label, className){ formCancelSubmit(); } }); }()); });