一页中有多个模态

时间:2015-04-21 16:08:19

标签: javascript jquery twitter-bootstrap modal-dialog

我试图在一个页面中获得多个模态(popup thingies)。

一个按钮可以让你看到你有什么主题,当你点击它时,会打开一个模态,告诉你什么时间和作业是什么。

另一个按钮可以让您添加新数据,并打开一个模式,可以添加新数据。

首先制作新的数据模式。

但现在我遇到的问题是,当我点击主题按钮时,会出现新数据按钮的模态,我不明白为什么。

这是代码:

<script type="text/javascript">
            $(document).ready(function(){
           $(".btn").click(function(){
        $("#myModal1").modal('show');

       });
            });
        </script>

模态一个!

<a href="#myModal1" class="btn btn-lg btn-primary">Nieuwe taak toevoegen</a>
                        <div id="myModal1" class="modal fade">
                <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">Nieuwe taak toevoegen</h4>
                        </div>
                        <div class="modal-body">
                            <table>
                            <tr>
                                <form id="form1" action="<?php $_SERVER['PHP_SELF'];?>" method="POST">
                            <td>Naam voor afspraak:</td>
                                <td><input type="text" name="afspraak"></td></tr>
                            <tr></tr>
                            <tr>
                              <td></br>Omschrijving: </td>
                              <td><textarea cols="34" rows="5" name="description"></textarea></td>
                            </tr>
                            <tr></tr>
                    <tr>
                        <td>Datum:</td>
                                        <td>
                                            <select name="day">
                                                <?php 
                                                                //Selecteerd als eerste de dag van vandaag
                                                    echo "<option selected>" .Date('d')."</option>";
                                                        for($i = 1; $i <=31; $i++)
                                                        {
                                                            echo '<option value="'.$i.'">'.$i.'</option>';
                                                        }
                                                        ?>  
                                                    </select>
                                                    <select name="month">
                                                        <?php   
                                                                //Selecteerd als eerste de maand van vandaag
                                                            echo "<option selected>" .Date('m')."</option>";
                                                                for($i = 1; $i <=12; $i++)
                                                                {
                                                                    echo '<option value="'.$i.'">'.$i.'</option>';
                                                                }
                                                        ?>
                                                    </select>
                                                    <select name="year">
                                                        <?php
                                                                //Selecteerd als eerste de jaar van vandaag
                                                            echo "<option selected>" .Date('Y')."</option>";                                                                
                                                                for($i = date("Y"); $i <= 2050; $i++)
                                                                {
                                                                    echo '<option value="'.$i.'">'.$i.'</option>';
                                                                }
                                                        ?>
                                                    </select>
                                                </td>
                                            </tr>
                                            <tr></tr>
                                            <tr>
                                                <td>Tijd: </td>
                                                <td><input type="time" name="tijd" value="<?php echo date('H:i:s');?>"></td>
                                            </tr>
                        </table>
                        </div>

                        <div class="modal-footer">
                           <!--- <button type="submit" class="btn btn-default" data-dismiss="modal" value="Toevoegen" name="submit">Toevoegen</button>--->
                                                <td><input type="submit" value="Toevoegen" name="submit"></td>
                          <!---  <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> 
                </form>

和模态2

echo "<a href='#myModal2' class='btn btn-primary' id='test'>$name</a>
                                <div id='myModal2' class='modal fade'>
                                    <div class='modal-dialog'>
                                        <div class='modal-header'>
                                            <h4 class='modal-title'>$name</h4>
                                        </div>
                                        <div class='modal-body'>
                                            <p><td>Datum: $datum </br /> Tijd: $tijd </br /> Opdracht: $huiswerk</td>
                                        </div>
                                        <div class='modal-footer'>
                                            <button type=button' class='btn btn-default' data-dismiss='modal'>Sluiten</button>
                                        </div>
                                    </div>
                                </div>";

我认为.btn有问题,并且它只接受一个btn。但我不知道怎么做,所以我可以多次使用.btn。

.btn2不起作用。

2 个答案:

答案 0 :(得分:0)

在你的js中你正在调用modal.show()方法。要显示的模态的值永远不会更改。

应该看起来像这样

$(".btn").click(function(){
  var id = $(this).attr('id');
  $(id).modal('show');
});

但是你可以避免使用JS的东西并在你的链接上使用data-toggle="modal" html5属性。如图所示http://getbootstrap.com/javascript/#modals

答案 1 :(得分:0)

到目前为止,我们有 chakra-ui,它提供了 modal,可以像这样使用:

const { 
  isOpen, 
  onOpen, 
  onClose 
} = useDisclosure()

但这仅适用于一个组件中的单个模态,例如:

<>
  <Modal isOpen={isOpen} onClose={onClose}>
    ...Modal Code...
  <Modal/>

  <Button onClick={onOpen}>
    button
  <Button/>
</>

要使其在组件中具有多个模态,只需像这样声明:

const { 
  isOpen: isOpenAssets, 
  onOpen: onOpenAssets, 
  onClose: onCloseAssets 
} = useDisclosure()

const { 
  isOpen: isOpenAlert, 
  onOpen: onOpenAlert, 
  onClose: onCloseAlert 
} = useDisclosure()