【问题标题】:Bootstrap Multi-select not working in a POST dropdown?Bootstrap 多选在 POST 下拉菜单中不起作用?
【发布时间】:2016-04-17 12:27:40
【问题描述】:

我有以下初始化多选的先决条件。

<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" rel="stylesheet" media="screen">
<link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" rel="stylesheet" type="text/css" />
<!-- Bootstrap core and multiselect JS -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.js"></script>
<script src="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js" type="text/javascript"></script>

它似乎没有按预期工作,如下所示:

现在,第二个下拉列表“名称”是基于第一个下拉列表“选择集成”的值的 AJAX 类型下拉列表。

<tr>
<td>Select Integration: </td> <td>
    <select name="new_src_type_id" id="integration-list" class="form-control" onChange="getState(this.value);">
            <option value="">Select Integration</option>
        <?php
            foreach ($integration_id as $index_integ => $integ_id) {
                echo "<option value='$integ_id'>".$integration[$index_integ]." </option>";
            }
        ?>
    </select>
</td>
</tr>
<tr>
<td>Name: (The changes made will be applied to the ff:)</td> <td>
    <select name="element[]" id="element-list" class="form-control" multiple="multiple">
</select>
</td>
</tr>

调用者:

<script>
function getState(val) {
    $.ajax({
    type: "POST",
    url: "get_element.php",
    data:'src_type_id='+val,
    success: function(data){
        $("#element-list").html(data);
    }
    });
}
</script>

我希望能够将第二个下拉菜单“名称”初始化为多选下拉菜单,但它不像文档显示的那样工作。 http://davidstutz.github.io/bootstrap-multiselect/

当我这样称呼它时,这似乎不起作用:

<script>
$(document).ready(function() { 
        $('#element-list').multiselect({
            includeSelectAllOption: true
        });
    });
</script>

【问题讨论】:

    标签: javascript jquery twitter-bootstrap twitter-bootstrap-3 bootstrap-multiselect


    【解决方案1】:

    有时你无法在使用 ajax 加载后初始化元素,你需要在该 ajax 加载完成后再次重新初始化。

    <script>
        function getState(val) {
            $.ajax({
            type: "POST",
            url: "get_element.php",
            data:'src_type_id='+val,
            success: function(data){
                $("#element-list").html(data);
                $('#element-list').multiselect({ includeSelectAllOption: true });
            }
            });
        }
    </script>
    

    【讨论】:

    • 感谢您的回复。这似乎不起作用。
    • 在我的 footer.php 中找到另一个 jquery 和 bootstrap js 实例后,此方法有效(从现在开始观看这些页面 :))..我只需要添加 $('#element-list ').multiselect("销毁");到您的脚本以销毁列表的先前实例。谢谢!!
    【解决方案2】:

    您需要像下面这样初始化您的多选(假设您的 ajax 调用按照您的需要正确返回值)。

    function getState(val) {
        $.ajax({
        type: "POST",
        url: "get_element.php",
        data:'src_type_id='+val,
        success: function(data){
            $("#element-list").append($('<option></option>').val(data).html(data)).multiselect("destroy").multiselect({
                includeSelectAllOption: true,          //For SelectAll Option
                enableFiltering: true,                 //For Search Option
             });
        }
    }
    

    我写了

    .multiselect("destroy")
    

    销毁之前的多选实例,因为您将根据下拉菜单更改多选的值。

    【讨论】:

    • 感谢您的回复。这似乎是一个很大的选择。见imgur.com/wlBrqLe
    • 你能用 JS Fiddle 你尝试过的代码(使用虚拟数据)吗?以便其他人可以解决问题。
    • 从图像上看不是很清楚是什么导致了你的问题。您能否在添加到下拉列表之前验证您收到的数据并检查它是否需要任何处理。
    • 请确认您是否包含“引导多选样式表”?看起来这就是问题所在。
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多