javascriptについて質問があります。
初回起動時のform(画面項目)の値と現在の値を比較して1つでも変更があった場合にはポップアップを表示するといった処理を実装したいのですが何か良い方法
があれば、ご教授お願い致します。
はじめはその項目のvalueとdefaultValueにて比較できると思いましたが、defaultValueは画面を再描画するタイミングで取得しますが、行いたい処理の途中でアクションが走り必ず再描画されるタイミングがあるためその方法では比較できないことに気づきました。(また項目の入力チェックなのでエラーになった場合にも)
なので再描画されても、初期表示時の値と現在の値を比較する方法はないでしょうか…
ちなみに画面はJSPにて実装しており、項目はtextやradioやoptionなどあります。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
様々方法は有ると思いますが、LocalStorage に入れておいて、ロード時に内容を確認するという手段があります。これであればたとえ不意な再描画でもデータを保持できます。ただ、フォーム送信後にデータを消しておかないと比較に失敗する原因になるのでご注意ください。
【フォームの内容をLocalStorage(SessionStorage)にJSONで保存・復旧する - Qiita】
http://qiita.com/nbnb/items/b44810b7ccffcdfa8ac7
【LocalStorageをもっとデータベースライクに使う方法 - Qiita】
http://qiita.com/masamitsu-konya/items/ce7f6469434076448238
投稿2016/06/09 15:54
総合スコア69407
0
画面描画後に入力フォーム内の入力項目に何らかの変更をしたこと(テキストボックスに何かを入力した、ラジオボタンを変更した、チェックボックスのON/OFFをした、など)を検知する仕組みとして JavaScriptのform.onchangeイベントがあります。
ただし"何らかの変更"ですので、結果的に変更前と同じ値であっても「変更した」と判定します。
もっと厳密な比較を実装する場合には、やはり画面出力後の値をすべて保管しておき、チェックしたいタイミングですべて比較することになるでしょうか。
お手軽に入力項目の変更を検知するので良ければ、form.onchangeが一番でしょうか。
投稿2016/06/09 16:34
総合スコア12011
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
簡単なサンプルを作成しました。
こういう事ですかね・・・?
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf8"> 5 <title>formの比較</title> 6</head> 7<body> 8<form id="form"> 9 <input type="text" value="あいうえお"> 10 <select> 11 <option value="aaa"></option> 12 <option value="bbb"></option> 13 <option value="ccc"></option> 14 </select> 15 <textarea>あいうえお</textarea> 16 <p id="checkBtn">フォームを確認</p> 17</form><!-- /#form --> 18 19<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 20<script> 21var $item = $('#form').find('input,select,textarea'), 22 valArr = [], 23 checkChange = function() { 24 $item.each(function(e){ 25 if(valArr[e] != $(this).val()) 26 alert('値が変更されています'); 27 }); 28 }; 29 30$item.each(function(e){ 31 valArr[e] = $(this).val(); 32}); 33 34$('#checkBtn').click(checkChange); 35</script> 36</body> 37</html> 38
投稿2016/06/09 16:26
総合スコア93
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/09 16:39
2016/06/09 16:44
2016/06/09 16:48 編集
2016/06/09 16:51
2016/06/09 16:55
2016/06/09 16:57
2016/06/09 17:16
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/09 16:21
2016/06/09 16:30
2016/06/09 16:53
2016/06/09 17:09
2016/06/09 17:18
2016/06/09 17:23
2016/06/09 17:44
2016/06/09 17:44
2016/06/09 17:51
2016/06/09 17:57
2016/06/09 18:08