フォームの入力・選択内容を自動保存してくれる「Garlicjs」プラグインの利用方法
お問い合わせページ等、フォームを設置したページで入力・選択した内容を保存したい。ページ遷移を挟む場合はPHPのセッションで保存できるが、挟まない場合はJavaScriptで色々対応しないといけなさそう。この辺りを簡単に実装できないか調べたところ「Garlicjs」プラグインが良さそう。以下にサンプルと実装方法をメモ。
サンプルページ
https://taitan916.info/sample/Garlicjs/
各項目の入力・選択後にスーパーリロード(Windowsの場合Ctrl + F5)しても、入力・選択内容が残っている点が確認できる筈。
また、リセットや送信ボタンを押すと入力・選択内容がリセットされる点が確認できる筈。
Garlicjs
公式サイト
GitHub
https://github.com/guillaumepotier/garlic.js
CDN
CDNで使う場合は以下を記述する。jQueryも必要な点に注意。
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/garlic.js/1.4.2/garlic.min.js"></script>
実装方法
ソースコード
<form id="test-form" method="post">
<div>
textbox:
<input type="text" name="textbox" id="textbox">
</div>
<div>
textarea:
<textarea name="textarea" id="textarea"></textarea>
</div>
<div>
radio:
<input type="radio" name="radio" value="1">
<input type="radio" name="radio" value="2">
</div>
<div>
checkbox:
<input type="checkbox" name="checkbox" value="1">
<input type="checkbox" name="checkbox" value="2">
</div>
<div>
select:
<select name="select" id="select">
<option></option>
<option value="1">select1</option>
<option value="2">select2</option>
</select>
</div>
<div>
<input type="button" id="reset" value="リセット">
<input type="submit" value="送信">
</div>
</form>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/garlic.js/1.4.2/garlic.min.js"></script>
<script>
$(function(){
//自動保存開始
$(`#test-form`).garlic();
//入力・選択内容をリセット
$(`#reset`).on(`click`, function(){
$(`#test-form`).garlic(`destroy`);
$(`#textbox, #textarea, #select`).val('');
$(`input[type="checkbox"]`).removeAttr(`checked`).prop(`checked`, false).change();
$(`input:radio[name=radio]:checked`)[0].checked = false;
});
})
</script>
保存場所
入力・選択内容はlocalStorageに保存される。そのためキャッシュクリア等でlocalStorageを削除された場合はリセットされる。
保存データの削除について
フォーム送信時に自動で削除される。
また、実運用だとあまり無さそうだけどリセットボタンを設置するような場合は「$(`#reset`).on(`click`, function(){」以降のように記述すること。
関連記事
-
-
ライブラリ等を使用せずファイルをドラッグ&ドロップでアップロードする方法
formにドラッグ&ドロップでファイルをアップロードする機能を実装する場 ...
-
-
jQueryのfind実行時に複数のセレクタを指定する方法
jQueryのfind()実行時に複数のセレクタを指定したい。 <div ...
-
-
jQueryでAjax通信したデータをPHPで受け取り、zip化したファイルをダウンロードさせる方法
jQueryのAjaxで何らかのデータをPHP側に送信し、PHP側で当該データを ...
-
-
jQueryで指定の行動をとった際に、クリックイベントを発火させる方法
あるシステムでAという要素をクリックした際に何らかの処理を行うという部分があり、 ...
-
-
日付入力のテキストフォームにカレンダープラグインを導入
やりたかった事と制限は下記の通り。 ・日付入力のテキストフォームにカレンダープラ ...