Отправить параметр в модальное окно Bootstrap?
У меня проблема, я не могу передать какие-либо параметры в модальное окно (используя Bootstrap 3), я попытался использовать решение, указанное в этой ссылке, но я не могу заставить его работать:
Динамически загружать информацию в Twitter Загрузочный модальный
(Решение пользователя kexxcream).
Но нажимая кнопку, дисплей не показывает мне ничего, очевидно блокирует, прикрепляет снимок ниже:
http://i.imgur.com/uzRUyf1.png
Я прикрепил код (тот же кодовый пост выше слева);
Код HTML:
<div id="myModal" class="modal hide fade">
<div class="modal-header">
<button class="close" data-dismiss="modal">×</button>
<h3>Title</h3>
</div>
<div class="modal-body">
<div id="modalContent" style="display:none;">
</div>
</div>
<div class="modal-footer">
<a href="#" class="btn btn-info" data-dismiss="modal" >Close</a>
</div>
</div>
Код JS:
$("a[data-toggle=modal]").click(function()
{
var essay_id = $(this).attr('id');
$.ajax({
cache: false,
type: 'POST',
url: 'backend.php',
data: 'EID='+essay_id,
success: function(data)
{
$('#myModal').show();
$('#modalContent').show().html(data);
}
});
});
Кнопка
<a href='#myModal' data-toggle='modal' id='2'> Edit </a>
Код PHP (backend.php):
<?php
$editId = $_POST['EID'];
?>
<div class="jumbotron">
<div class="container">
<h1>The ID Selected is <?php echo $editId ?></h1>
</div>
</div>
Ответы
Ответ 1
Прежде всего, вы должны исправить modal HTML структуру. Теперь это не правильно, вам не нужен класс .hide
:
<div id="edit-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body edit-content">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Затем ссылки должны указывать на этот модальный атрибут data-target
:
<a href="#myModal" data-toggle="modal" id="1" data-target="#edit-modal">Edit 1</a>
Наконец, часть Js становится очень простой:
$('#edit-modal').on('show.bs.modal', function(e) {
var $modal = $(this),
esseyId = e.relatedTarget.id;
$.ajax({
cache: false,
type: 'POST',
url: 'backend.php',
data: 'EID=' + essayId,
success: function(data) {
$modal.find('.edit-content').html(data);
}
});
})
Ответ 2
Существует лучшее решение, чем принятый ответ, в частности, с использованием атрибутов data- *. Установка id на 1 приведет к возникновению проблем, если какой-либо другой элемент на странице имеет id = 1. Вместо этого вы можете:
<button class="btn btn-primary" data-toggle="modal" data-target="#yourModalID" data-yourparameter="whateverYouWant">Load</button>
<script>
$('#yourModalID').on('show.bs.modal', function(e) {
var yourparameter = e.relatedTarget.dataset.yourparameter;
// Do some stuff w/ it.
});
</script>
Ответ 3
Я нашел решение на:
Передача данных в загрузочный мода
Так просто используйте:
$(e.relatedTarget).data('book-id');
с 'book-id
' является атрибутом модального с pre-fix 'data-
'
Ответ 4
Я нашел это лучше, нет необходимости удалять данные, просто вызывайте источник удаленного контента каждый раз
$(document).ready(function() {
$('.class').click(function() {
var id = this.id;
//alert(id);checking that have correct id
$("#iframe").attr("src","url?id=" + id);
$('#Modal').modal({
show: true
});
});
});