[공부] 프로그래밍/JavaScript
뷰에서 모달로 데이터 전달
woodisco
2023. 9. 12. 11:30
뷰에서 모달로 데이터 전달
<div id="" name="">
<div class="col-lg-12">
<label>Upload History:</label>
<div class="text-right">
<label>${uploadCount???then(uploadCount,'')}</label>
<label>items</label>
</div>
</div>
<div class="col-lg-12">
<table class="">
<thead>
<tr>
<th class="col-lg-1">No</th>
<th class="col-lg-3">Upload date and time</th>
<th class="col-lg-3">File name</th>
<th class="col-lg-2">Download</th>
<th class="col-lg-3">Date of download</th>
</tr>
</thead>
<tbody>
<#if testList?has_content>
<#list testList as list>
<tr>
<td class="col-lg-1 upload-list-index">${list_index + 1}</td>
<td class="col-lg-3 test1" id="test1" name="test1">${list.test1}</td>
<input type="hidden" class="test2" id="test2" name="test2" value="${list.test2}">
<td class="col-lg-3 test3" id="test3" name="test3">${list.test3}</td>
<td class="col-lg-2">
<a class="passwordModal" data-toggle="modal" href="#passwordModal" data-backdrop="static" data-keyboard="false">Download</a>
</td>
<td class="col-lg-3 test4" id="test4" name="test4">${list.test4}</td>
</tr>
</#list>
</#if>
</tbody>
</table>
</div>
</div>
<!--Password Modal-->
<div class="modal fade" id="passwordModal" tabindex="-1" role="dialog" aria-labelledby="passwordModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Password Authentication</h5>
</div>
<form id="downloadForm" name="downloadForm" action="" method="post">
<input type="hidden" name="uploadCountModal" id="uploadCountModal" value="">
<input type="hidden" name="test3Modal" id="test3Modal" value="">
<input type="hidden" name="test2Modal" id="test2Modal" value="">
<div class="row modal-body">
<div class="col-sm-4">
<div>password:</div>
</div>
<div class="col-sm-8">
<input class="inputText" type="password" id="password" name="password" value="">
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" id="" name="" type="button">Confirm</button>
<button class="btn" type="button" data-dismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
</div>
$(document).ready(function () {
// 뷰의 데이터를 모달로 전달
$(".passwordModal").click(function () {
let $parentDiv = $(this).closest("tr");
let uploadCount = $parentDiv.find(".upload-list-index").text().trim();
let test2 = $parentDiv.find(".test2").val();
let test3 = $parentDiv.find(".test3").text().trim();
$("#uploadCountModal").val(uploadCount);
$("#test2Modal").val(test2);
$("#test3Modal").val(test3);
});
// 에러메세지모달의 OK버튼을 클릭시 패스워드모달 표시
$("#modalOKButton").click(function () {
// 모달만 선택가능 하도록 처리
$("#passwordModal").modal({backdrop: 'static', keyboard: false});
$("#password").val("");
});
// 패스워드모달의 취소버튼을 클릭시 return
$("#passwordModal").on("hidden.bs.modal", function () {
$("#password").val("");
return;
});
});
◇ 뷰 초기 실행: $(document).ready(function () { ... });는 HTML 문서가 로드될 때 실행될 함수를 정의합니다. 이것은 일반적으로 페이지의 모든 요소가 준비된 후 실행되어야 하는 코드를 감싸는 데 사용됩니다.
◇ 데이터를 뷰에서 모달로 전달: .passwordModal 클래스를 가진 요소(버튼 또는 링크)를 클릭하면 이벤트가 발생합니다. 클릭된 버튼이 속한 <tr> 요소를 찾아서 그 안에서 특정 데이터를 가져옵니다. 이 데이터는 업로드 카운트(uploadCount), test2, 그리고 test3입니다. 이 데이터를 가져와서 모달 창의 해당 입력 필드에 설정합니다.
◇ 비밀번호 모달 표시: "modalOKButton" 요소를 클릭하면 모달 창을 표시하는 이벤트가 발생합니다. backdrop 및 keyboard 속성을 사용하여 모달 창 외부를 클릭하거나 키보드로 모달 창을 숨기는 것을 방지합니다. 비밀번호 입력 필드(#password)를 초기화합니다.
◇ 비밀번호 모달 닫기: "passwordModal" 모달이 닫힐 때(hidden.bs.modal 이벤트) 비밀번호 입력 필드를 초기화하고 함수를 종료합니다.