フォームの入力・選択内容を自動保存してくれる「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(){」以降のように記述すること。
関連記事
-
-
国土地理院のAPIを使用して無料でジオコーディング(住所→経度緯度)を行う方法
GoogleMapAPIでジオコーディングをするには、支払い情報を登録したアカウ ...
-
-
jQueryでチェックボックスの全チェック&チェック解除する方法
フォームのチェックボックスで「全てにチェックを入れる」「全てのチェックを外す」と ...
-
-
簡単にtable内をソート
やりたかった事は、 ・テーブル内でのソート ・内容は文字、数値、日時 ・PHPじ ...
-
-
Jcropを使ってブラウザ上で画像を範囲指定して切り抜き(トリミング)
やりたかった事は、画像をアップロードして必要な部分のみを範囲指定してもらい、指定 ...
-
-
jQuery UIのDatepickerでリセット(入力内容消去)ボタンの追加方法
jQuery UIのDatepickerでキーボード入力を防ぎたいためreado ...