如何使用 Bootstrap Multiselect 获取所有选定的值并在 AJAX 中使用它

Posted

技术标签:

【中文标题】如何使用 Bootstrap Multiselect 获取所有选定的值并在 AJAX 中使用它【英文标题】:How to get all selected values using Bootstrap Multiselect and use it in AJAX 【发布时间】:2015-06-26 15:24:27 【问题描述】:

我正在使用Bootstrap Multiselect,这是我在 html 中的设置:

<div class="form-group">
    <select class="form-control" id="bldg_type" multiple="multiple">% for type in buildings %
        <option value="type.bldg_type">type.bldg_type</option>% endfor %
    </select>
</div>

我想为我的查询使用选定的值,即我的 Ajax 代码的 sn-p:

$.ajax(
    url: "cnt_bldg/",
    type: "GET",
    dataType: "JSON",
    data: 
        'brgy_id': brgy_id,
        'bldg_type': $('#bldg_type option:selected').val()
    ,
    ...

$('#bldg_type option:selected').val() 的问题是我只能得到 1 个值。例如我在我的选择选项中检查了MarketPolice Station,然后在我的控制台http://127.0.0.1:8000/cnt_bldg/?brgy_id=All&amp;bldg_type=Market". 中查看它只得到Market

如何获取所有值并将其用于查询?

顺便说一句,我正在使用 Django。我已经阅读了this answer,但我不知道如何在上面的 AJAX 代码中使用结果。

【问题讨论】:

【参考方案1】:

你试过简单吗

$('#bldg_type').val()

它适用于我的引导多选。

【讨论】:

$('#multiselectId').val() 效果很好,我得到所有选定的值,即 ["1","3","8"]【参考方案2】:

HTML

<div class="form-group">
        <select id="multiselect1" class="form-control" id="bldg_type" multiple="multiple">% for type in buildings %
            <option value="type.bldg_type">type.bldg_type</option>% endfor %
        </select>
</div> 

jQuery

var selected = $('#multiselect1').val()

【讨论】:

【参考方案3】:
<div class="form-group">
    <select id="multiselect1" class="form-control" id="bldg_type" multiple="multiple">% for type in buildings %
        <option value="type.bldg_type">type.bldg_type</option>% endfor %
    </select>
</div>

将 ID multiselect 添加到您的选择控件。

在您的 javascript 中全局声明一个变量,如下所示:

var selected = [];

如下初始化它[来自您提供的答案链接]

$('#multiselect1').multiselect(
    selectAllValue: 'multiselect-all',
    onChange: function(element, checked) 
        var brands = $('#multiselect1 option:selected');
        $(brands).each(function(index, brand)
            selected.push([$(this).val()]);
        );
    
); 

通过您的 ajax 发送。

$.ajax(
    url: "cnt_bldg/",
    type: "GET",
    dataType: "JSON",
    data: 
        'brgy_id': brgy_id,
        'bldg_type': selected //This will send the values as list of strings
    ,
    ...

注意 - 在处理接收到的值时,将其作为服务器方法中的字符串列表接受!!

【讨论】:

我试过了,它返回如下内容:http://127.0.0.1:8000/cnt_bldg/?brgy_id=All&amp;bldg_type%5B%5D=Market&amp;bldg_type%5B%5D=Transport+Terminal% 其中它是一个[] 是的,这意味着参数列表.. 也检查 this link.. 使用这个例子,我发现我必须在事件处理程序中添加一行如下 varbrands = $('#multiselect1 option:selected');选定 = []; $(brands).each(function(index, brand) selected.push([$(this).val()]); );否则所选数组以多个条目结束 我已经在答案中提到了!! var selected = []; 将在全球范围内声明..【参考方案4】:

获取多选选项的值非常简单。

$('#bldg_type').multiselect(
       onChange: function()
             var selectedOptions = $('#bldg_type').val();
             console.log(selectedOptions);
)

selectedOptions 应该为您提供所选选项的列表。它给出了从 select 标签中的选项中选择的所有值。

您可以在全局的某个位置定义 selectedOptions 变量,以便 ajax 调用可以访问它。

祝你好运,希望对你有帮助

【讨论】:

以上是关于如何使用 Bootstrap Multiselect 获取所有选定的值并在 AJAX 中使用它的主要内容,如果未能解决你的问题,请参考以下文章

如何使用bootstrap框架 bootstrap入门必看!

如何使用 NavWalker 和 bootstrap.min.css 在 WordPress 中创建 Bootstrap 导航栏

如何使用 Bootstrap 设置 Stripe Elements 输入的样式?

如何在 bootstrap 3.0 中使用字形图标

如何在 Vue 组件中使用 Bootstrap?

如何使用 SASS 扩展/修改(自定义)Bootstrap