繰り返し追加したリストにて、テキストエリアの入力内容は自動で保存できたのですが、リストタグのUp&Downによる移動の並びが保存できず困っています。
初心者で詳しくないのですが恐らく、UPとDOWNボタンでクリックしたときに並びが保存できればOKかと思うのですがうまくいきません。
リストの移動では、Sortableが良く使われているようですが他と組み合わせると動かなかったので下記のコードでは別の手法にしています。
どうかご教授お願いいたします。
<button id="add" class="butt">追加</button> <button id="reset">リセット</button> <table> <ul id="ul_li_SubCategories" class="foo chargeCapturetable margin0"></ul> </table> <button id="upid" class="upbutton">Up</button><button id="downid" class="downbutton">Down</button> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> <script> //リストUpDown $(document).on('click', '.liEllipsis', function(){ $('.selected').removeClass('selected'); $(this).addClass('selected'); }); $('.upbutton').on('click', function () { var $currentElement = $('#ul_li_SubCategories .selected'); moveUp($currentElement); }); $('.downbutton').on('click', function () { var $currentElement = $('#ul_li_SubCategories .selected'); moveDown($currentElement); }); var moveUp = function ($currentElement) { var hook = $currentElement.prev('.liEllipsis'); if (hook.length) { var elementToMove = $currentElement.detach(); hook.before(elementToMove); } }; var moveDown = function ($currentElement) { var hook = $currentElement.next('.liEllipsis'); if (hook.length) { var elementToMove = $currentElement.detach(); hook.after(elementToMove); } }; // //ローカルストレージ var initData = []; var listString = ""; function initialize(){ $.each(initData, function(key, value) { $("#ul_li_SubCategories").prepend('<li class="liEllipsis"><textarea class="taF22 textBox1"></textarea><button class="delete">削除</button></li>'); }); } if (localStorage.getItem("ul_li_SubCategories")) { $("#ul_li_SubCategories").html(localStorage.getItem("ul_li_SubCategories")); } else { initialize(); } $("#add").click(function() { $("#ul_li_SubCategories").prepend('<li class="liEllipsis"><textarea class="taF22 textBox1"></textarea><button class="delete">削除</button></li>'); localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html()); }); $("#ul_li_SubCategories").on("keyup", ":input", function(){ $.each($("textarea"), function(key, input){ $(input).text($(input).val()); }); localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html()); }); $("#ul_li_SubCategories").on("click", ".delete", function() { $(this).parent().remove(); localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html()); }); $("#reset").click(function(){ $("#ul_li_SubCategories").empty(); initialize(); localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html()); }); $("#ul_li_SubCategories li").sortable({ cancel: ":input,button,textarea,.liEllipsis", update: function() { localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html()); } }); $("#ul_li_SubCategories li").on("focusout", function() { localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html()); }); </script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/13 09:58
2017/02/13 10:05
2017/02/14 04:17
2017/02/14 10:39
2017/02/15 05:51