Pattern Lockは、WEBページに簡単にAndroidのようなパターンロックの機能を追加できる軽量なjQueryプラグインです。
スマホやタブレットのスワイプ操作以外にも、PC等でのマウス操作にも対応しています。
また、簡単に強度を変更したり、Bot対策のcaptchaとしても使う事が出来ます。
var lock1 = new PatternLock('#patternHolder1');
var lock2 = new PatternLock('#patternHolder2',{matrix:[3, 6]});
var lock3 = new PatternLock("#patternContainer3", { mapper: {1:9, 2:8, 3:7, 4:6, 5:5, 6:4, 7:3, 8:2, 9:1}, onDraw: function(pattern) { alert(pattern); } });
var lock4 = new PatternLock("#patternContainer4", { matrix:[4, 4], margin: 9 });
※サーバ側にpatternCapthaが必要です。
Pattern Lockをダウンロードして、必要な位置に解凍し、組み込むWEBページにJavaScript
とCSS
を読み込みます。
ページコンテンツ内の必要な個所に任意のIDやクラスを付与した外枠を設置します。
PatternLock
関数を使ってパターンを描画する
白いポイントの数を縦横それぞれ数値で設定します。デフォルト:[3, 3]
var sample = new PatternLock('#sampleDiv', { // 縦5箇所、横10箇所の横長のマトリックス martix: [5, 10] // [縦, 横] });
既定50pxマスの外側に付与するマージンの大きさを数値で設定します。白いポイントの間隔を変更できます。デフォルト:20
※枠の既定が50pxのため、マージンをゼロに設定しても約50px程度の間隔があきます。
var sample = new PatternLock('#sampleDiv', { // 上下左右に5pxのマージンを付与 margin: 5 });
各点をなぞった時に表示される丸印の半径を設定します。デフォルト:25
var sample = new PatternLock('#sampleDiv', { // 半径30pxに変更 radius: 30 });
各点をなぞっている途中に、その軌跡の表示有無を設定します。デフォルト:true
var sample = new PatternLock('#sampleDiv', { // 入力途中の軌跡を非表示 patternVisible: false });
各点をなぞっている途中に、マウスやスワイプを追う線の表示有無を設定します。デフォルト:true
var sample = new PatternLock('#sampleDiv', { // 入力途中の軌跡線を非表示 lineOnMove: false });
一連の入力作業が完了した際に呼び出される処理をonDraw
を使って設定します。
※コールバックの引数pattern
には、入力された結果数値が入ります。
var sample = new PatternLock('#sampleDiv', { // オプション設定 martix: [5, 10], margin: 15, // コールバック設定 onDraw: function(pattern) { // ここにコールバック処理を記載 alert('Callback Test!'); } });
基本、各点には、左上から右へと順番に1から数値が割り当てられ、なぞったラインに沿って数値が連結され結果を処理します。
このmapper
を使う事で、任意の点に任意の数値を割り当てる事が可能です。
var sample = new PatternLock('#sampleDiv', { // マッパー設定 mapper: {1:3, 2:1, 3:4, 4:2, 5:9, 6:7, 7:8, 8:5, 9:6} // 解説 // 1番目の点(上段の左から1番目の点)に、数値「3」を割り当て // 2番目の点(上段の左から2番目の点)に、数値「1」を割り当て ... });
下記メソッドは、PatternLock
以外で、何か操作をしたい時に使うための補助処理関数です。
PatternLock
とは別に、オプション設定状況を取得したり、設定を変更したい時に使用します。
var sample = new PatternLock('#sampleDiv', { // オプション設定 martix: [5, 10] // 縦5、横10のマトリックスを設定 }); // マトリックス設定を確認 var currentMatrix = sample.option('matrix'); // currentMatrixには、[5, 10]が入る // マトリックス設定を変更 sample.option('matrix', [8, 3]); // 縦8、横3のマトリックスに変更 // マトリックス設定を再度確認 var currentMatrix = sample.option('matrix'); // currentMatrixには、[8, 3]が入る
入力中の軌跡をクリアします。
※上の「例4」のリセットボタンに使用されています。
var sample = new PatternLock('#sampleDiv'}); sample.reset(); // '#sampleDiv'に入力されたパターン軌跡をクリアします。
対象の入力にエラーを取得します。
var sample = new PatternLock('#sampleDiv'}); var errorText = sample.reset(); // '#sampleDiv'でのエラーが入ります。
対象の入力結果を取得します。
var sample = new PatternLock('#sampleDiv'}); var inputPattern = sample.getPattern(); // '#sampleDiv'での入力結果数値文字列が入ります。 // 「1」→「5」→「12」→「16」と順次入力した場合 // inputPatternには、'151216'が入ります。
対象の入力結果と特定パターンを比較し、一致/不一致時の各処理を設定します。
var sample = new PatternLock('#sampleDiv'}); sample.checkForPattern('123456', function() { // 一致時の処理 alert("入力が一致しました"); }, function() { // 不一致時の処理 alert("入力が一致しませんでした"); } );