6

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

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

我将bootstrap.js,bootstrap.css和都包含bootstrap-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>
4

5 回答 5

11

您需要正确选择文本区域才能使该stopPropagation()方法起作用。尝试这个:

JS

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

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

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

于 2012-11-23T01:47:52.483 回答
2

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

$('.dropdown').dropdown().on("hide.bs.dropdown", function(e) {
           if ($.contains(dropdown, e.target)) {
                e.preventDefault();
            //or return false;
            }
        });
于 2014-03-18T08:18:10.250 回答
1

您缺少 <form> 标签:

<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>
于 2012-11-22T23:57:57.007 回答
0

最好的答案是执行单击,因此它的行为与用户单击鼠标以隐藏下拉菜单的行为相同,为此,请将此快照代码添加到您的页面:

<script>
    $(document).ready(function () {
        $("li.dropdown ul.dropdown-menu li").click(function (event) {
            event.toElement.parentElement.click();
        })
    })
</script>
于 2014-09-24T02:55:00.840 回答
0

您可以一起省略下拉调用,引导下拉菜单在没有它的情况下工作。确保正确包装脚本,可以将其包含在页面的标题或正文中,尽管我个人更喜欢将其放在页面的正文中。

$('.dropdown-menu input, .dropdown-menu label').click(function(e) {
    e.stopPropagation();
});
于 2015-08-20T07:36:57.403 回答