我没有让这个工作。下拉列表一直在关闭。
我希望能够从下拉菜单中发送消息。
我在标题中加入了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>
答案 0 :(得分:11)
您需要正确选择textarea才能使stopPropagation()
方法正常工作。试试这个:
<强> JS 强>
$('.dropdown-menu textarea').click(function(e) {
e.stopPropagation();
});
此外,您的textarea不能是ul
元素的子元素,因此请将其包含在li
列表项中。
答案 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();
});