リマインダーを成果物として作成するにあたって、画面をHTML、JavaSprictで作成しています。テーブルの各行の編集ボタンを押すと、その行がフォームに代わるようにしているのですが、なぜか行がずれて二行になってしまいます。
検索すると、コードの中でformタグが入れ子になっている事が原因かもしれないと思いました。
編集ボタンをおしても、行がずれずにその場でリマインダーの内容を編集できるように、改善したいです。よろしくお願いいたします。
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>タイトル</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> </head> <body> <div class="container"> <h1>Listing Reminder</h1> <table class="table"> <thead> <tr> <th>Date</th> <th>Task</th> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <form th:action="@{/reminder/{id}(id=*{id})}" th:method="put"> <tr th:each="ReminderViewModel:${reminderViewModelList}" th:object="${ReminderViewModel}"> <td th:id="'date_' + *{id}" th:text="*{date}"></td> <td th:id="'task_' + *{id}" th:text="*{task}"></td> <td style="display: none;" th:id="'formDate_' + *{id}"> <div class="form-group"> <input class="form-control" type="date" name="date" th:value="*{date}" /> </div> </td> <td style="display: none;" th:id="'formTask_' + *{id}"> <div class="form-group"> <input class="form-control" type="text" name="task" th:value="*{task}" /> </div> </td> <td th:id="'edit_' + *{id}"><a class="btn btn-default btn-xs" type="button" th:attr="onclick='edit(' + *{id} + ')'">編集</a></td> <td style="display: none;" th:id="'update_' + *{id}"><a class="btn btn-default btn-xs" type="submit">更新</a></td> <td th:id="'del_' + *{id}"> <form th:action="@{/reminder/{id}(id=*{id})}" th:method="delete"> <input class="btn btn-default btn-xs" type="submit" value="削除"> </form> </td> </tr> </form> <tr> <th></th> <th></th> <th></th> <th></th> <th></th> </tr> <form th:action="@{/reminder}" th:method="post"> <tr> <td> <div class="form-group"> <input class="form-control" type="date" name="date" /> </div> </td> <td> <div class="form-group"> <input class="form-control" type="text" name="task" /> </div> </td> <td> <button class="btn btn-default" type="submit">登録</button> </td> <td></td> <td></td> </tr> </form> </tbody> </table> </div> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8=" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o" crossorigin="anonymous"></script> <script> function edit(id) { const date = document.getElementById('date_' + id); const task = document.getElementById('task_' + id); const edit = document.getElementById('edit_' + id); const del = document.getElementById('del_' + id); date.style.display = 'none'; task.style.display = 'none'; edit.style.display = 'none'; del.style.display = 'none'; const formDate = document.getElementById('formDate_' + id); const formTask = document.getElementById('formTask_' + id); const update = document.getElementById('update_' + id); formDate.style.display = 'block'; formTask.style.display = 'block'; update.style.display = 'block'; } </script> </body> </html>
回答2件
あなたの回答
tips
プレビュー