前提・実現したいこと
登録されたデータを削除する際に最初confirmメソッドを用いて実装していました。
confirmの場合確認時『OK』と『キャンセル』だったので
『はい』・『いいえ』に変更したいと思い調べたところ
関数を自作するしかないと分かり進めていきました。
・削除ボタンを押すと確認のダイアログが出現する
・『いいえ』を押すとダイアログが消える(ダイアログが消えているだけなので機能としては違うのかも)
・『はい』を押すと該当データが削除され一覧のページへ
という流れを考えています。
発生している問題・エラーメッセージ
削除ボタンを押す 確認のダイアログが出現 『いいえ』を押すとダイアログが非表示になる 『はい』を押すと二重submitでアクセス禁止となる
該当のソースコード
HTML
1<!-- CSSの設定 --> 2{% load static %} 3<link rel="stylesheet" type="text/css" href="{% static 'employee/reset.css' %}"> 4<link rel="stylesheet" type="text/css" href="{% static 'employee/style.css' %}"> 5<link rel="stylesheet" type="text/css" href="{% static 'employee/show.css' %}"> 6<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> 7<script type="text/javascript" src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script> 8<link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/pepper-grinder/jquery-ui.css"> 9 10<div class = top> 11 <h1>一覧</h1> 12 <!-- ページを遷移するボタンの表示 --> 13 <div class = move-btn> 14 <div><a href="/employee/" class = btn>メニュー</a></div> 15 </div> 16 17 <!-- 登録されているユーザー情報をテーブルで表示 --> 18 <div class = show-table> 19 <table border="1"> 20 <tr> 21 <th class="th1">ID</th> 22 <th class="th2">担当者名</th> 23 <th class="th3">性別</th> 24 <th class="th4">年齢</th> 25 <th class="th5">部署</th> 26 </tr> 27 <!-- 繰り返し処理でUserモデルに登録されているデータを全て表示する --> 28 {% for value in registrations %} 29 <tr> 30 <td class="td1">{{ value.id }}</td> 31 <td class="td2">{{ value.employee_name }}</td> 32 <!-- Userモデルに登録されたsexのカラムの値によって表示する文字を変える --> 33 <td class="td3">{% if value.sex == True %}男{% endif %} 34 {% if value.sex == False %}女{% endif %}</td> 35 <td class="td4">{{ value.age }}</td> 36 <!-- Userモデルに登録されたdepartmentのカラムの値によって表示する文字を変える --> 37 <td class="td5">{% if value.department == 1 %}管理{% endif %} 38 {% if value.department == 2 %}システム開発{% endif %} 39 {% if value.department == 3 %}営業{% endif %}</td> 40 <!-- 更新と削除のボタン表示 --> 41 <td class="edit"> 42 <button><a href="{% url 'employee:update' id=value.id %}"><img src="{% static "employee/update-btn.png" %}"></a></button> 43 <button id='del_btn' class='del_btn'><img src="{% static "employee/delete-btn.png" %}"></button> 44 <div id="dl2" style="display:none;"> 45 <p>この行を削除しますか?</p> 46 <footer> 47 <button id='cancel_button'>いいえ</button> 48 <form name="delete_form" id="delete_form" method="post" action="{% url 'employee:delete' id=value.id %}"></form> 49 {% csrf_token %} 50 <button id='delete_button' type="submit">はい</button> 51 </form> 52 </footer> 53 </div> 54 </td> 55 </td> 56 </tr> 57 {% endfor %} 58 </table> 59 60 <script type="text/javascript"> 61 62 $(function() { 63 $(".del_btn").click(function() { 64 $("#dl2").dialog({ 65 modal:true, 66 title:"登録者情報の削除確認", 67 buttons: { 68 "はい": function() {$(this).dialog("close");}, 69 "いいえ": function() {$(this).dialog("close");} 70 } 71 }); 72 }); 73 }); 74 </script> 75 </div> 76</div> 77
view
1# 削除へのリクエストに対する処理 2def delete(request, id): 3 employee = get_object_or_404(User, pk=id) 4 employee.delete() 5 return redirect('employee:show')
試したこと
<!-- 更新と削除のボタン表示 --> <td class="edit"> <button><a href="{% url 'employee:update' id=value.id %}"><img src="{% static "employee/update-btn.png" %}"></a></button> <form name="delete_form" id="delete_form" onsubmit="return confirm();" method="post" action="{% url 'employee:delete' id=value.id %}"></form> {% csrf_token %} <button id='del_btn' class='del_btn' type="submit"><img src="{% static "employee/delete-btn.png" %}"></button> </form> </td> </td> </tr> {% endfor %} </table> <div id="dl2" style="display:none;"> <p>この行を削除しますか?</p> </div> <script type="text/javascript"> /* function confirm() {} */ $(function confirm() { $(".del_btn").click(function() { $("#dl2").dialog({ modal:true, title:"登録者情報の削除確認", buttons: { "はい": function() { $(this).dialog("close"); }, "いいえ": function() { return false; $(this).dialog("close"); } } }); }); }); </script>
formタグにonsubmit属性を追加
ダイアログで『いいえ』を選択するとsubmitをキャンセルさせる
補足情報(FW/ツールのバージョンなど)
Windows10
Python3.9.4
Django 3.2.3
VitualStudioCode
他にも不足なとこあれば教えてください
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/10 07:24
2021/06/10 07:30
2021/06/10 07:31
2021/06/10 09:56 編集
2021/06/10 10:14
2021/06/10 10:27