将参数发送到引导模式窗口?
Posted
技术标签:
【中文标题】将参数发送到引导模式窗口?【英文标题】:Send parameter to Bootstrap modal window? 【发布时间】:2014-08-11 00:17:52 【问题描述】:我有一个问题,我无法将任何参数传递给模式窗口(使用 Bootstrap 3),我尝试使用此链接中所述的解决方案,但无法使其工作:
Dynamically load information to Twitter Bootstrap modal
(解决方案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>
【问题讨论】:
$editId = filter_var($_POST["id"], FILTER_SANITIZE_NUMBER_INT); // 只是玩安全:) 【参考方案1】:有一个比公认答案更好的解决方案,特别是使用 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>
【讨论】:
即使我在标记中使用了data-yourParameter
,我也必须使用e.relatedTarget.dataset.yourparameter
(小写)。不知道为什么。
嗯,很高兴知道。我想我以前从未真正使用过 data-* 属性。谢谢!
更好的答案。需要在顶部
我在 Yii2 应用程序中使用上述解决方案,它不起作用。 :(
谢谢,它工作正常,使用你的参数(小写)【参考方案2】:
我找到了这个更好的方法,不需要删除数据,每次调用远程内容的来源即可
$(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
);
);
);
【讨论】:
【参考方案3】:我在以下位置找到了解决方案: Passing data to a bootstrap modal
所以简单地使用:
$(e.relatedTarget).data('book-id');
with 'book-id
' 是带有前缀'data-
'的模态属性
【讨论】:
【参考方案4】:首先你应该修复模态 HTML structure。现在不正确了,你不需要.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);
);
)
演示:http://plnkr.co/edit/4XnLTZ557qMegqRmWVwU?p=preview
【讨论】:
朋友非常感谢您的帮助。他在网上搜索了很多天,我无法解决问题,但是您立即解决了我的问题。我真的很感激,我工作没有问题。再次非常感谢您。来自智利的问候。 很高兴能帮上忙! @dfsq 如果你有空闲时间我会感谢你如果你能看看这个赏金问题:***.com/questions/47609994/…以上是关于将参数发送到引导模式窗口?的主要内容,如果未能解决你的问题,请参考以下文章