首页 文章

将数据传递给bootstrap模式

提问于
浏览
427

我有几个超链接,每个超链接都附有一个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');
    });
});

但是,当我单击超链接时,没有任何反应 . 当我给超链接一个href =“#addBookDialog”时,模态打开就好了,但它不包含任何数据 .

我按照这个例子:How to pass values arguments to modal.show() function in Bootstrap

(我也试过这个:How to set the input value in a modal dialogue?

6 回答

  • 30

    如果您使用 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);
    });
    

    http://jsfiddle.net/k7FC2/

  • 4

    如果你在bootstrap 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">&times;</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>
    

    JQUERY

    <script type="text/javascript">
        $(function () {
            $(".identifyingClass").click(function () {
                var my_id_value = $(this).data('id');
                $(".modal-body #hiddenValue").val(my_id_value);
            })
        });
    </script>
    
  • 9

    你可以试试simpleBootstrapDialog . 在这里你可以传递 Headers ,消息,回拨选项取消和提交等...

  • 293

    您的代码将使用正确的模态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>
    
  • 452

    我想你可以使用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>&nbsp;</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>
    

    JAVASCRIPT

    $(document).on("click", ".open-AddBookDialog", function () {
         var myBookId = $(this).data('id');
         $(".modal-body #bookId").val( myBookId );
         // As pointed out in comments, 
         // it is superfluous to have to manually call the modal.
         // $('#addBookDialog').modal('show');
    });
    
  • 0

    以下是我使用@ mg1075代码实现它的方法 . 我想要一些更通用的代码,以便不必将类分配给模态触发链接/按钮:

    Tested in Twitter Bootstrap 3.0.3.

    HTML

    <a href="#" data-target="#my_modal" data-toggle="modal" data-id="my_id_value">Open Modal</a>
    

    JAVASCRIPT

    $(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);
      })
    });
    

相关问题