Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Twitter Bootstrap dropdown closes when clicked

I am not getting this to work. The dropdown is closing all the time.

I want to be able to send message from the dropdown menu.

I included both bootstrap.js, bootstrap.css and bootstrap-responsive.css in the header.

How can I get this dropdown not to close ?

<head>
<script type='text/javascript'>//<![CDATA[
    $(window).load(function () {
        $('.dropdown-menu textarea a').click(function (e) {
            e.stopPropagation();
        });

    });

    function ShowDr(div) {
        $("#medr" + div).css("display", "block");
        $("#xdr" + div).focus();
    }

    //]]>  
</script>
</head>
<body>


 <ul class="nav">
   <li class="dropdown" data-dropdown="dropdown">
     <a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown">      Message 
     <b class="caret"></b></a>
     <ul class="dropdown-menu dropdown-menu-large">
        This is a message from the user John to Ann. If Ann wants to send an answer she will click the link. Then 
        the textarea will become visible. 
        <a href="javascript:void(0)" onclick="javascript:ShowDr('18')"><img src='/img/reply.gif'> Answer</a><br/>
        <div id="medr18" style="display:none" class="medr">            
            <li>
                <div style="padding:20px;">
                    <textarea name="xdr18" id="xdr18" class="textareasmall"></textarea> <br /><input type=button value="Send" class="btn btn-success btn-medium" onclick="GoM('2','Message sent')" />
                </div>
            </li>
         </div>
       </ul>     
   </li>
</ul>
like image 731
Bjorn Ingi Avatar asked Nov 22 '12 23:11

Bjorn Ingi


2 Answers

You need to properly select the textarea in order for the stopPropagation() method to work. Try this:

JS

$('.dropdown-menu textarea').click(function(e) {
    e.stopPropagation();
});

Also, your textarea cannot be a child of a ul element, so include it inside a li list item instead.

Demo: http://jsfiddle.net/ENWFy/

like image 116
Andres Ilich Avatar answered Sep 21 '22 14:09

Andres Ilich


Time passed since answer had been accepted, but if you want to keep the dropdown opened, if it acts like a kind of dialog, the best way i think is:

$('.dropdown').dropdown().on("hide.bs.dropdown", function(e) {
           if ($.contains(dropdown, e.target)) {
                e.preventDefault();
            //or return false;
            }
        });
like image 33
lavrik Avatar answered Sep 19 '22 14:09

lavrik