edit.jsp 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  2. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  3. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
  4. <%@ page language="java" contentType="text/html; charset=UTF-8"
  5. pageEncoding="UTF-8"%>
  6. <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
  7. <script>
  8. $( function(){
  9. $( "#sendForm" ).validate({
  10. rules: {
  11. title : {
  12. maxlength : 100
  13. },
  14. content: {
  15. maxlength : 4000
  16. },
  17. },
  18. messages : {
  19. title : {
  20. required : "제목을 입력해주세요."
  21. },
  22. content : {
  23. required : "내용을 입력해주세요."
  24. }
  25. },
  26. onkeyup: function( element, event ) {
  27. $( element ).valid();
  28. },
  29. onfocusout: function (element) {
  30. $( element ).val( $.trim( $( element ).val() ) );
  31. $( element ).valid();
  32. },
  33. submitHandler: function(form) {
  34. form.submit();
  35. }
  36. });
  37. var button = '';
  38. var fileOrgName = '<c:out value="${item.fileOriginalName}" />';
  39. button = '<input type="file" style="display: none;" id="file" name="file" onchange="checkFile(this);">';
  40. if (fileOrgName == "") {
  41. button = '<input type="file" id="file" name="file" onchange="checkFile(this);">';
  42. button += '<button type="button" class="btn btn-danger" id="fileRemoveBtn" onclick="removeFile();">첨부파일 삭제</button>';
  43. } else {
  44. button += '<button type="button" class="btn btn-danger" id="fileRemoveBtn" onclick="removeFileNameTag();">첨부파일 삭제</button>';
  45. }
  46. $("#fileTd").append(button);
  47. })
  48. function checkFile(el){
  49. // files 로 해당 파일 정보 얻기.
  50. var file = el.files;
  51. // file[0].size 는 파일 용량 정보입니다.
  52. if(file[0].size > 1024 * 1024 * 10){
  53. // 용량 초과시 경고후 해당 파일의 용량도 보여줌
  54. alert('10MB 이하 파일만 등록할 수 있습니다.\n\n' + '현재파일 용량 : ' + (Math.round(file[0].size / 1024 / 1024 * 100) / 100) + 'MB');
  55. } else {
  56. // 체크를 통과했다면 종료.
  57. return;
  58. }
  59. // 체크에 걸리면 선택된 내용 취소 처리를 해야함.
  60. // 파일선택 폼의 내용은 스크립트로 컨트롤 할 수 없습니다.
  61. // 그래서 그냥 새로 폼을 새로 써주는 방식으로 초기화 합니다.
  62. // 이렇게 하면 간단 !?
  63. el.outerHTML = el.outerHTML;
  64. }
  65. function removeFileNameTag() {
  66. $("#fileName").css("display", "none");
  67. $("#file").remove();
  68. $("#fileTd").prepend('<input type="file" id="file" name="file" onchange="checkFile(this);">');
  69. $("input[name=fileOriginalName]").val("");
  70. document.getElementById("fileRemoveBtn").setAttribute("onClick", "removeFile()");
  71. }
  72. function removeFile() {
  73. $("#file").val("");
  74. }
  75. </script>
  76. </head>
  77. <body>
  78. <div class="wrapper">
  79. <jsp:include page="${data._INCLUDE}/sidebar.jsp"></jsp:include>
  80. <div class="main">
  81. <jsp:include page="${data._INCLUDE}/top.jsp"></jsp:include>
  82. <main class="content">
  83. <div class="container-fluid p-0">
  84. <div class="row">
  85. <div class="col-12 col-lg-6">
  86. <h1 class="h3 mb-3">의견 게시판</h1>
  87. </div>
  88. <div class="col-12 col-lg-6 text-right">
  89. <nav aria-label="breadcrumb">
  90. <ol class="breadcrumb">
  91. <li class="breadcrumb-item"><a href="javscript:;">Home</a></li>
  92. <li class="breadcrumb-item">의견 게시판 수정</li>
  93. </ol>
  94. </nav>
  95. </div>
  96. </div>
  97. <div class="row">
  98. <div class="col-12">
  99. <div class="card">
  100. <form id="sendForm" action="./edit/update" method="post" enctype="multipart/form-data">
  101. <input type="hidden" name="createBy" value="${item.createBy}" >
  102. <input type="hidden" name="postSeq" value="${item.postSeq}" >
  103. <input type="hidden" name="fileName" value="${item.fileName}" >
  104. <input type="hidden" name="fileOriginalName" value="${item.fileOriginalName}" >
  105. <div class="card-body">
  106. <table class="table mobile-table">
  107. <colgroup>
  108. <col style="width:20%">
  109. <col style="width:80%">
  110. </colgroup>
  111. <tr>
  112. <th><span class="fix">*</span>제목</th>
  113. <td>
  114. <input type="text" name="title" class="form-control" value="${item.title}" placeholder="제목을 입력하세요" maxlength="80" required>
  115. </td>
  116. </tr>
  117. <tr>
  118. <th><span class="fix">*</span>내용</th>
  119. <td>
  120. <textarea class="form-control" rows="10" name="content" placeholder="내용을 입력하세요" maxlength="1000" required><c:out value="${item.content}" /></textarea>
  121. </td>
  122. </tr>
  123. <tr>
  124. <th>첨부파일</th>
  125. <td id="fileTd">
  126. <c:if test="${item.fileOriginalName eq ''}">
  127. </c:if>
  128. <c:if test="${item.fileOriginalName ne ''}">
  129. <span id="fileName"><c:out value="${item.fileOriginalName}" /></span>
  130. </c:if>
  131. <!-- <input type="file" style="display: none;" id="file" name="file" onchange="checkFile(this);"> -->
  132. </td>
  133. </tr>
  134. </table>
  135. <div class="row mt-3">
  136. <div class="col-12">
  137. <div class="text-right">
  138. <button type="button" class="btn btn-outline-primary w100" onclick="history.back();">취소</button>
  139. <button type="submit" class="btn btn-primary w100">수정</button>
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. </form>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. </main>
  150. <jsp:include page="${data._INCLUDE}/footer.jsp"></jsp:include>
  151. </div>
  152. </div>
  153. </body>
  154. </html>