web-dev-qa-db-fra.com

Comment faire div masquer et afficher comme une fenêtre popup?

Je suis nouveau sur jQuery. J'essaie de créer une fonctionnalité de zone de recherche dans mon projet. J'ai créé un div qui contient les noms des villes, et je veux qu'il soit affiché sur l'événement de clic d'un bouton. Je peux cacher et montrer ce div en utilisant la méthode slideToggle() de jQuery sur l'événement click d'un bouton. Mais lorsque div est affiché, les autres contenus de ma page sont distraits. Je ne m'attends pas à ce comportement.

Voici mon image avant d'afficher cette div:

enter image description here

et ce qui suit est une image de la page après l'affichage de div:

enter image description here

Maintenant, je veux que ce div soit affiché comme une popup, afin qu'il ne détourne pas l'attention des autres contenus de la page.

Voici un code de ma section de zone de recherche en HTML:

        <!--start SearchBox section-->
        <section id="searchbox"style="background:white">
            <div class="container" style="margin-top:0px;">


              <div class="row">

                    <div class="col-lg-12">


               <form style="">
                    <center>
                            <div id="SearchBoxBorder" style="background:white;border:2px solid #a1a1a1;border-radius:5px;margin-top:20px;width:800px;">
                            <table id="mytable" >
                                    <td style="width:300px;background:white;">
                                       <center> <div class="form-group">
                                                <input type="text" class="form-control" id="exampleInputEmail1" placeholder="I am looking for"
                                                    style="border-width:5px;background:white; margin-top:17px; margin-left:15px; margin-right:10px;width:300px;
                                                    border-style:solid;border-width:5px;border-color:#a1a1a1;font-family:Arial,Helvetica,sans-serif;height:42px; font-size:18px;">
                                        </div></center>
                                     </td>

                                     <td style="width:50px ;text-align:right;background:white;"> <center><strong> in</strong></center>    </td>

                                     <td style="width:400px;background:white;">
                                     <center>
                                             <div class="input-group">
                                                   <input type="text" class="form-control" placeholder="in locality"
                                                    style="border-width:5px;background:white; margin-top:0px; margin-left:10px; margin-right:20px;width:;font-size:18px;
                                                    border-style:solid;border-width:5px;border-color:#a1a1a1;font-family:Arial,Helvetica,sans-serif;height:42px;">
                                                   <div class="input-group-btn">
                                                            <button type="button" class="btn btn-default dropdown-toggle"  data-toggle="dropdown" id="dropdownBtn" 
                                                             style="background:white;border-top-width:5px;border-right-width:5px;border-bottom-width:5px;border-left-width:1px;
                                                             border-color:#a1a1a1;height:42px;border-radius:0px;text-align:center;color:black; margin-right:20px;">Select<span class="caret"></span></button>

                                                             <!--City dropdown -->
                                                                    <div class="SearchCities">
                                                                            <div id="outer" style="">



                                                                                        <div id="innerLeft" style="">
                                                                                            <h5 >North India:</h5>
                                                                                            <ul class="city" type="none";>
                                                                                                    <li><a>Delhi</a></li>
                                                                                                    <li><a>Agra</a></li>
                                                                                                    <li><a>Shrinagar</a></li>
                                                                                                    <li><a>Noida</a></li>
                                                                                                    <li><a>Himachal</a></li>
                                                                                                    <li><a>Patna</a></li>
                                                                                            </ul>

                                                                                        </div>

                                                                                        <div id="innerRight" style="">
                                                                                            <a class="close">&times;</a>
                                                                                            <h5>West India:</h5>
                                                                                            <ul class="city" type="none";>
                                                                                                    <li><a>Mumbai</a></li>
                                                                                                    <li><a>Pune</a></li>
                                                                                                    <li><a>Nashik</a></li>
                                                                                                    <li><a>Kolhapur</a></li>
                                                                                                    <li><a>Osmanabad</a></li>
                                                                                                    <li><a>Ahamdabad</a></li>
                                                                                            </ul>
                                                                                        </div>


                                                                            </div><!--/outer-->
                                                                        </div><!--/SearchCities-->


                                                             </div><!-- /btn-group -->
                                                   <button type="button" class="btn btn-primary" style="margin-right:20px;"><i class="icon-search" style="font-size:20px"></i>  Search</button>
                                             </div><!-- /input-group -->
                                           </center>         
                                     </td>

                            </table>
                        </center>
                    </form>

    </div><!--/col-lg-12-->
</div><!--/row-->
    </div><!--/end of container-->
</section>
<!--End of SearchBox section-->

et voici mon code jQuery:

$(document).ready(function(){
  $(".SearchCities").hide();
  $("#dropdownBtn").click(function(){
  $(".SearchCities").slideToggle();
  });
});

Pour plus d'idées sur ce que je veux faire, visitez: askme.com et voyez une boîte de recherche en haut et cliquez sur le reste de l'Inde. Alors, pouvez-vous m'aider à y parvenir? Merci d'avance.

10
sachin_ware

Vous avez essentiellement trois façons:

  1. À la main: faites flottante la div popup et positionnez-la absolument, puis réglez à 100% (cela ressemblera à un menu popup. Assurez-vous l'élément parent a un positionnement relatif.

    HTML:

    <div class="input-group" style="position: relative;">
      <div class="SearchCities">
        ...
      </div>
    </div>
    

    CSS:

    .SearchCities {
      float: right;
      position: absolute;
      top: 100%;
    }
    

    JS: aucun changement requis

  2. Utilisez le plugin de dialogue de jQueryUI : comme indiqué dans la réponse de nrsharma, vous pouvez utiliser un plugin jQuery pour le faire ressembler à une boîte de dialogue popup.

    $('.SearchCities').dialog({ autoOpen: false }); // Initialize dialog plugin
    $('.SearchCities').dialog("open"); // Open popup
    

    Référence API: http://api.jqueryui.com/dialog/

    Exemples: http://jqueryui.com/dialog/

    Téléchargement du plugin: http://jqueryui.com/download/

  3. Utilisez le menu déroulant de Bootstrap: il semble d'après votre code que vous utilisez bootstrap. Vous pouvez facilement utiliser bootstrap déroulants ou modaux.

    Les modaux d'amorçage sont des boîtes de dialogue contextuelles tout comme le plug-in de boîte de dialogue de jQueryUI, mais ils sont plus beaux et ils sont beaucoup plus personnalisables. Jetez un œil là-bas pour un exemple: http://getbootstrap.com/javascript/#modals

    Les listes déroulantes Bootstrap sont de simples menus déroulants, mais avec un peu de piratage, vous pouvez y mettre n'importe quoi.

    Tout ce dont vous avez besoin est un peu de HTML (pas de JavaScript):

    <div class="input-group dropdown">
      <button type="button" class="btn btn-default dropdown-toggle"
        data-toggle="dropdown" id="dropdownBtn" role="button">...</button>
      <div class="dropdown-menu SearchCities" role="menu">
        ...
      </div>
    </div>
    

    Pour que cela fonctionne, vous devez également inclure Bootstrap plugins js (bootstrap.js/bootstrap.min.js).

    Référence: http://getbootstrap.com/javascript/#dropdowns

10
fbbdev

Ici, vous pouvez le faire facilement

HTML

<div class="dialogbox"> This is Dialogue box</div>
<a id="click">click here</a>

CSS

.dialogbox{width:100px; height:100px; background:grey;display:none}

JQUERY

<script src="latest jquery library"></script>

    <script>

    $(document).ready(function(){
    $("#click").click(function(){

    $(".dialogbox").toggle();

    });

    });
   </script>
4
Dinesh Kanivu

Vous pouvez le faire facilement avec une boîte de dialogue jQuery UI.

HTML:

<div id="dialog" title="Basic dialog">
  <p>This is the default dialog which is useful for displaying information. The
     dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>

JavaScript/jQuery:

$(function() {
    $( "#dialog" ).dialog();
});

Plus d'informations peuvent être trouvées ici .

3
nrsharma