web-dev-qa-db-ja.com

パラメーターをBootstrap= modal window?

問題があり、モーダルウィンドウにパラメータを渡すことができません(Bootstrap 3)を使用して、このリンクに記載されているソリューションを使用しようとしましたが、動作させることができません:

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">&times;</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>
20
user3759455

まず最初に、モーダル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">&times;</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

35
dfsq

特に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>
53
Joe

私は解決策を見つけました: Passing data to a bootstrap modal

単純に使用します:

 $(e.relatedTarget).data('book-id'); 

with 'book-id'は、接頭辞 'data-'を持つモーダルの属性です

1
latumi

私はこのより良い方法を見つけました、データを削除する必要はなく、毎回リモートコンテンツのソースを呼び出すだけです

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