[javascript] 부트 스트랩 모달에 데이터 전달
각각 ID가 첨부 된 몇 개의 하이퍼 링크가 있습니다. 이 링크를 클릭하면 모달 ( http://twitter.github.com/bootstrap/javascript.html#modals )을 열고이 ID를 모달에 전달하려고합니다. Google에서 검색했지만 도움이 될만한 것을 찾을 수 없었습니다.
이것은 코드입니다.
<a data-toggle="modal" data-id="@book.Id" title="Add this item" class="open-AddBookDialog"></a>
열어야 할 것 :
<div class="modal hide" id="addBookDialog">
<div class="modal-body">
<input type="hidden" name="bookId" id="bookId" value=""/>
</div>
</div>
이 코드 조각으로 :
$(document).ready(function () {
$(".open-AddBookDialog").click(function () {
$('#bookId').val($(this).data('id'));
$('#addBookDialog').modal('show');
});
});
그러나 하이퍼 링크를 클릭해도 아무 변화가 없습니다. 하이퍼 링크를 주면 <a href="#addBookDialog" ...>
모달이 제대로 열리지 만 데이터가 포함되어 있지 않습니다.
나는이 예제를 따랐다 : 부트 스트랩에서 modal.show () 함수에 값 인수를 전달하는 방법
(그리고 나는 이것을 시도했다 : 모달 대화 상자에서 입력 값을 설정하는 방법? )
답변
jQuery의 .on 이벤트 핸들러를 사용 하여이 작업을 수행 할 수 있다고 생각 합니다.
다음은 테스트 할 수있는 바이올린입니다. 바이올린에서 HTML 프레임을 최대한 확장하여 모달을 볼 수 있도록하십시오.
http://jsfiddle.net/Au9tc/605/
HTML
<p>Link 1</p>
<a data-toggle="modal" data-id="ISBN564541" title="Add this item" class="open-AddBookDialog btn btn-primary" href="#addBookDialog">test</a>
<p> </p>
<p>Link 2</p>
<a data-toggle="modal" data-id="ISBN-001122" title="Add this item" class="open-AddBookDialog btn btn-primary" href="#addBookDialog">test</a>
<div class="modal hide" id="addBookDialog">
<div class="modal-header">
<button class="close" data-dismiss="modal">×</button>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<p>some content</p>
<input type="text" name="bookId" id="bookId" value=""/>
</div>
</div>
자바 스크립트
$(document).on("click", ".open-AddBookDialog", function () {
var myBookId = $(this).data('id');
$(".modal-body #bookId").val( myBookId );
// As pointed out in comments,
// it is unnecessary to have to manually call the modal.
// $('#addBookDialog').modal('show');
});
답변
Bootstrap 3.2.0을 사용하는 경우 더 확실한 방법이 있습니다.
HTML 링크
<a href="#my_modal" data-toggle="modal" data-book-id="my_id_value">Open Modal</a>
모달 JavaScript
//triggered when modal is about to be shown
$('#my_modal').on('show.bs.modal', function(e) {
//get data-id attribute of the clicked element
var bookId = $(e.relatedTarget).data('book-id');
//populate the textbox
$(e.currentTarget).find('input[name="bookId"]').val(bookId);
});
답변
다음은 @ mg1075의 코드에서 작동하는 방법입니다. 클래스를 모달 트리거 링크 / 버튼에 할당하지 않아도되도록 좀 더 일반적인 코드를 원했습니다.
트위터 부트 스트랩에서 테스트 3.0.3.
HTML
<a href="#" data-target="#my_modal" data-toggle="modal" data-id="my_id_value">Open Modal</a>
자바 스크립트
$(document).ready(function() {
$('a[data-toggle=modal], button[data-toggle=modal]').click(function () {
var data_id = '';
if (typeof $(this).data('id') !== 'undefined') {
data_id = $(this).data('id');
}
$('#my_element_id').val(data_id);
})
});
답변
부트 스트랩 3 이상을 사용하는 경우 Jquery를 사용하면 조금 더 단축 될 수 있습니다.
HTML
<a href="#" data-target="#my_modal" data-toggle="modal" class="identifyingClass" data-id="my_id_value">Open Modal</a>
<div class="modal fade" id="my_modal" tabindex="-1" role="dialog" aria-labelledby="my_modalLabel">
<div class="modal-dialog" role="dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal Title</h4>
</div>
<div class="modal-body">
Modal Body
<input type="hidden" name="hiddenValue" id="hiddenValue" value="" />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">No</button>
<button type="button" class="btn btn-primary">Yes</button>
</div>
</div>
</div>
쿼리
<script type="text/javascript">
$(function () {
$(".identifyingClass").click(function () {
var my_id_value = $(this).data('id');
$(".modal-body #hiddenValue").val(my_id_value);
})
});
</script>
답변
코드가 올바른 모달 html 구조로 작동했을 것입니다.
$(function(){
$(".open-AddBookDialog").click(function(){
$('#bookId').val($(this).data('id'));
$("#addBookDialog").modal("show");
});
});
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<a data-id="@book.Id" title="Add this item" class="open-AddBookDialog">Open Modal</a>
<div id="addBookDialog" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<input type="hidden" name="bookId" id="bookId" value=""/>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</html>
답변
부트 스트랩 4.3- 스 니펫 아래의 코드 사용-자세한 내용은 여기
답변
다음은 id_data를 모달로 보내는 방법입니다.
<input
href="#"
data-some-id="uid0123456789"
data-toggle="modal"
data-target="#my_modal"
value="SHOW MODAL"
type="submit"
class="btn modal-btn"/>
<div class="col-md-5">
<div class="modal fade" id="my_modal">
<div class="modal-body modal-content">
<h2 name="hiddenValue" id="hiddenValue" />
</div>
<div class="modal-footer" />
</div>
그리고 자바 스크립트 :
$(function () {
$(".modal-btn").click(function (){
var data_var = $(this).data('some-id');
$(".modal-body h2").text(data_var);
})
});