我有两个超链接,每个都有一个ID附加。当我点击这个链接时,我想打开一个模态(http://twitter.github.com/bootstrap/javascript.html#modals),并将这个ID传递给模态。我在谷歌上搜索,但我找不到任何可以帮助我的东西。

这是代码:

<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"…>,模态打开得很好,但它不包含任何数据。

我遵循了这个例子:如何在Bootstrap中将值参数传递给modal.show()函数

(我也试过这个:如何在模态对话中设置输入值?)


当前回答

我发现这个方法很有用:

创建点击事件:

$( button ).on('click', function(e) {
    let id = e.node.data.id;

    $('#myModal').modal('show', {id: id});
});

创建show.bs.modal事件:

$('#myModal').on('show.bs.modal', function (e) {

     // access parsed information through relatedTarget
     console.log(e.relatedTarget.id);

});

额外的:

让你的逻辑在show.bs.modal中检查属性是否被解析,就像这样: id:(e.r relatedtarget。hasOwnProperty('id') ?e.relatedTarget.id: null)

其他回答

这是如此简单的jquery:

如果下面是你的锚链接:

<a data-toggle="modal" data-id="@book.Id" title="Add this item" class="open-AddBookDialog"></a>

在你的模态的显示事件中,你可以像下面这样访问锚标记

//triggered when modal is shown
$('#modal_id').on('shown.bs.modal', function(event) {

    // The reference tag is your anchor tag here
    var reference_tag = $(event.relatedTarget); 
    var id = reference_tag.data('id')
    // ...
    // ...
})


您可以尝试simpleBootstrapDialog。在这里你可以传递标题,消息,回调选项取消和提交等…

使用此插件包括simpleBootstrapDialog.js文件如下所示

<script type="text/javascript" src="/simpleDialog.js"></script>

基本用法

<script type="text/javascript>
$.simpleDialog();
</script>

自定义标题和描述

$.simpleDialog({
  title:"Alert Dialog",
  message:"Alert Message"
});

与回调

<script type="text/javascript>
$.simpleDialog({
    onSuccess:function(){
        alert("You confirmed");
    },
    onCancel:function(){
        alert("You cancelled");
    }
});
</script>

我是bootstrap 5,由于我控制之外的约束,我不能显示()脚本的模态,所以我依赖于弹出模态的按钮的属性data-b -toggle和data-b -target。

Bootstrap暴露了一些事件(https://getbootstrap.com/docs/5.0/components/modal/),我们可以像这样钩住代码:

document.getElementById('idModal').addEventListener('show.bs.modal', (e) => {
    console.log(e.relatedTarget);
});

在relatedTarget中,我们将在dataset中找到指定的数据属性,例如,如果我们有一个看起来像这样的元素:

<button
    class="btn btn-secondary"
    data-id="fk_articles"
    data-bs-toggle="modal"
    data-bs-target="#documentationModal">
        Documentation
</button>

然后我们可以通过以下方式到达fk_articles:

console.log( e.relatedTarget.dataset.id )

试试这个

$(function(){
 //when click a button
  $("#miButton").click(function(){
    $(".dynamic-field").remove();
    //pass the data in the modal body adding html elements
    $('#myModal .modal-body').html('<input type="hidden" name="name" value="your value" class="dynamic-field">') ;
    //open the modal
    $('#myModal').modal('show') 
  })
})

例如,对于更新href值,我会做如下操作:

<a href="#myModal" data-toggle="modal" data-url="http://example.com">Show modal</a>

$('#myModal').on('show.bs.modal', function (e) {
    var url = $(e.relatedTarget).data('url');
    $(e.currentTarget).find('.any-class').attr("href", "url");
})