是否有任何自举支持呈现“常规”事实上的下拉列表选择框?也就是说,下拉框是一个值的列表,如果选择填充列表框的内容?

是否有类似的功能?

http://bootstrapformhelpers.com/select/


当前回答

Bootstrap3 .form-control很酷,但对于那些喜欢或需要带有按钮和ul选项的下拉菜单的人来说,这里是更新的代码。我已经编辑了Steve的代码,以修复跳转到哈希链接并在选择后关闭下拉菜单。

感谢史蒂夫、本和斯凯利!

$(".dropdown-menu li a").click(function () {
    var selText = $(this).text();
    $(this).closest('div').find('button[data-toggle="dropdown"]').html(selText + ' <span class="caret"></span>');
    $(this).closest('.dropdown').removeClass("open");
    return false;
});

其他回答

我目前正在与下拉列表作斗争,我想分享我的经验:

在某些特定情况下,<select>不能使用,必须使用下拉菜单“模拟”。

例如,如果你想创建引导输入组,比如带有下拉菜单的按钮(参见http://getbootstrap.com/components/#input-groups-buttons-dropdowns)。不幸的是,<select>在输入组中不支持,它将不能正确呈现。

或者有人已经解出来了吗? 我对解决方案很感兴趣。

更复杂的是,如果您使用字形图标或字体awesome图标作为下拉菜单的内容,则不能使用如此简单的$(this).text()来捕获用户在下拉菜单中选择的内容。例如: <李id = " someId " > < a href = " # 0 " > <我类=“fa fa-minus”> < / i > < / > < /李> 因为在这种情况下,没有文本,如果你将添加一些,那么它也将显示在下拉元素中,这是不需要的。

我发现了两种可能的解决方案:

1) 使用$(this).html()获取所选<li>元素的内容,然后检查它,但你会得到类似于<a href="#0"><i class="fa fa-minus"></i></a>的内容,所以你需要使用它来提取你需要的内容。

2) 使用$(this).text()并在hidden span中隐藏元素中的文本: <李id = " someId " > < a href = " # 0 " > <我类=“fa fa-minus”> <跨类=“隐藏”>文本< / span > < / i > < / > < /李>。 对我来说,这是一个简单而优雅的解决方案,你可以把你需要的任何文本,文本将被隐藏,你不需要像选项1那样做$(this).html()结果的任何转换来得到你需要的东西。

我希望这是清楚的,可以帮助别人:-)

Bootstrap3 .form-control很酷,但对于那些喜欢或需要带有按钮和ul选项的下拉菜单的人来说,这里是更新的代码。我已经编辑了Steve的代码,以修复跳转到哈希链接并在选择后关闭下拉菜单。

感谢史蒂夫、本和斯凯利!

$(".dropdown-menu li a").click(function () {
    var selText = $(this).text();
    $(this).closest('div').find('button[data-toggle="dropdown"]').html(selText + ' <span class="caret"></span>');
    $(this).closest('.dropdown').removeClass("open");
    return false;
});

另一种不使用.form-control的方法是:

  $(".dropdown-menu li a").click(function(){
        $(this).parents(".btn-group").find('.btn').html($(this).text() + ' <span class="caret"></span>');
        $(this).parents(".btn-group").find('.btn').val($(this).data('value'));
      });

$(".dropdown-menu li a").click(function(){ $(this).parents(".btn-group").find('.btn').html($(this).text() + ' <span class="caret"></span>'); $(this).parents(".btn-group").find('.btn').val($(this).data('value')); }); <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/> <script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> <div class="btn-group"> <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Test <span class="caret"> </span> </button> <ul class="dropdown-menu"> <li><a href='#'>test 1</a></li> <li><a href='#'>test 2</a></li> <li><a href='#'>test 3</a></li> </ul> </div>

本的代码要求父div有form-group类(我使用btn-group),这是一个略有不同的版本,只是搜索最近的div,甚至可能更快一点。

$(".dropdown-menu li a").click(function(){
    var selText = $(this).text();
    $(this).closest('div').find('button[data-toggle="dropdown"]').html(selText + ' <span class="caret"></span>');
});

测试:http://jsfiddle.net/brynner/hkwhaqsj/6/

HTML

<div class="input-group-btn select" id="select1">
    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><span class="selected">One</span> <span class="caret"></span></button>
    <ul class="dropdown-menu option" role="menu">
        <li id="1"><a href="#">One</a></li>
        <li id="2"><a href="#">Two</a></li>
    </ul>
</div>

jQuery

$('body').on('click','.option li',function(){
    var i = $(this).parents('.select').attr('id');
    var v = $(this).children().text();
    var o = $(this).attr('id');
    $('#'+i+' .selected').attr('id',o);
    $('#'+i+' .selected').text(v);
});

CSS

.select button {width:100%; text-align:left;}
.select .caret {position:absolute; right:10px; margin-top:10px;}
.select:last-child>.btn {border-top-left-radius:5px; border-bottom-left-radius:5px;}
.selected {padding-right:10px;}
.option {width:100%;}