実習!パスワードジェネレータを作ろう01
実習として今まで学習したHTML、CSS、JavaScript(jQuery)を使ってパスワードジェネレータを作ってみましょう。
パスワードジェネレータとは
パスワードジェネレータとはパスワードを生成するスクリプトです。
とりあえず完成したパスワードジェネレータのページを見てみましょう。
ロゴとタイトルの下に、まず生成したパスワードを表示するinputが並んでいます。コピペや個別編集できるようにspanなどではなくinputを使っています。
その下には文字数を設定するツールとして、テキスト型の入力欄と範囲型の入力欄を用意しました。この二つは連動しています。
さらに使用文字を選択できるようにボタンを並べています。文字ボタンをクリックすると使用/不使用の切り替えができます。
このパスワードジェネレータのページにアクセスするとデフォルトの設定でパスワードが生成され表示されます。各設定を変更すると自動で再生成されて表示が更新されます。
パスワード表示部分を作ろう
さっそくパスワード表示部分を作りましょう。
この部分はHTMLではなくJavaScriptで生成するようにします。
HTMLではtableのみを配置し、idは「result」にしておきます。
JavaScriptの部分は次のようになります。
// パスワード表示欄を生成 for(var i=0,html='';i<4;i++){ html+='<tr>'; for(var j=0;j<4;j++){ html+='<td></td>'; } html+='</tr>'; } $('#result').html(html);
方法はいくつもありますが、今回はHTMLを変数にどんどん追記していき最後にjQueryのhtml()で書き込んでいます。passというクラス名を付けておきます。
次にCSSの部分です。
#result{ margin:0px auto 50px auto; } .pass{ width:200px; }
パスワード表示部分はとりあえずここまでとします。
文字数の設定部分を作ろう
設定部分は次のようにtableによってデザインしています。
一応このテーブルにはsettingsというidを付けておきます。
パスワードの文字数の設定は、text型のinputとrange型のinputの二つを用意します。
<table id="settings"> <tr> <td><input id="length" type="text" value="16"></td> <td><input id="length_bar" type="range" value="16" min="1" max="60"></td> </tr>
それぞれにidを付けます。デフォルトとしてどちらも値を16にしています。range型はmin属性で最小値を1にし、max属性で最大値を60に設定しています。
文字選択の設定部分を作ろう
生成するパスワードの文字を選択する部分です。
文字のボタンはJavaScriptで生成しますが、他の部分はHTMLで書きます。
<tr> <td><button class="all" data-list="0" type="button">すべて</button></td> <td id="char_list_0"></td> </tr> <tr> <td><button class="all" data-list="1" type="button">すべて</button></td> <td id="char_list_1"></td> </tr> <tr> <td><button class="all" data-list="2" type="button">すべて</button></td> <td id="char_list_2"></td> </tr> <tr> <td><button class="all" data-list="3" type="button">すべて</button></td> <td id="char_list_3"></td> </tr>
「すべて」ボタンにはallというクラス名を付け、扱いやすいようにdataに番号を持たせておきます。各文字のボタンを挿入するところにはidを付けておきます。
JavaScriptの冒頭に使用する文字の配列を定義しておきます。
var CHAR=[ '0123456789', 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' ];
シングルクォーテーションとバックスラッシュをエスケープしています。
文字ボタンを生成するスクリプトは次のようになります。
for( i=0; i<CHAR.length; i++ ){ for( j=0,html=''; j<CHAR[i].length; j++ ){ html+='<button class="char">'+CHAR[i][j]+'</button>'; } $('#char_list_'+i).html(html); }
外側のforでCHARの文字グループ分の4回が回され、内側のforでは各文字グループの文字数分が実行されます。文字列は文字の配列として扱われているようです。各ボタンにはcharというクラス名を付けています。
まとめ
今回の実習はここまでです。細かい部分や他のCSSデザインに関しては実際にソースを見てみましょう。
次回は各ボタンに対するイベント処理を設定していきましょう。実習!パスワードジェネレータを作ろう02に続きます。