单击后,Twitter Bootstrap下拉列表将关闭

时间:2012-11-22 23:43:51

标签: drop-down-menu twitter-bootstrap

我没有让这个工作。下拉列表一直在关闭。

我希望能够从下拉菜单中发送消息。

我在标题中加入了bootstrap.jsbootstrap.cssbootstrap-responsive.css

如何才能让这个下拉菜单关闭?

<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>

5 个答案:

答案 0 :(得分:11)

您需要正确选择textarea才能使stopPropagation()方法正常工作。试试这个:

<强> JS

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

此外,您的textarea不能是ul元素的子元素,因此请将其包含在li列表项中。

演示:http://jsfiddle.net/ENWFy/

答案 1 :(得分:2)

自答案被接受以来已经过了一段时间,但是如果你想保持下拉列表打开,如果它就像一种对话,那么我认为最好的方法是:

$('.dropdown').dropdown().on("hide.bs.dropdown", function(e) {
           if ($.contains(dropdown, e.target)) {
                e.preventDefault();
            //or return false;
            }
        });

答案 2 :(得分:1)

您缺少&lt; form&gt; tag:

<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">
           <form>
             <textarea name="xd" id="xd" class="textareasmall"></textarea><br /><input type=button value="Send" class="btn btn-success btn-medium" onclick="GoM('2','Message sent')" />
           </form>
         </ul>     
    </li>
</ul>

答案 3 :(得分:0)

最好的答案是执行点击操作,它会像用户点击鼠标一样隐藏下拉菜单,为此,请将此快照代码添加到您的页面:

<script>
    $(document).ready(function () {
        $("li.dropdown ul.dropdown-menu li").click(function (event) {
            event.toElement.parentElement.click();
        })
    })
</script>

答案 4 :(得分:0)

你可以一起省略下拉调用,没有它的引导下拉列表。确保正确包装脚本,您可以将其包含在页面的标题或正文中,但我个人更喜欢将其放在页面正文中。

$('.dropdown-menu input, .dropdown-menu label').click(function(e) {
    e.stopPropagation();
});