bootstrap中select的使用(selectpicker)

本文详细介绍了如何使用Bootstrap的selectpicker组件,包括其API如multiple、data-none-selected-text等属性的使用,以及如何通过JavaScript进行控制。此外,还展示了如何利用Ajax从服务器获取数据实现二级联动的效果,提供了前端和Spring MVC后端的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

selectpicker简介

在html中select是原生的html元素,通过引入css,js链接并且给select元素添加selectpicker类可以使用bootstrap风格的选择器:

<link href="/bootstrap-select-1.12.4/dist/css/bootstrap-select.min.css" rel="stylesheet" />

<script src="/bootstrap-select-1.12.4/dist/js/bootstrap-select.min.js"></script>

<select class="selectpicker" >
</select>

(这个网址加载速度较慢,建议把css,js文件下载下来放到本地文件夹中引用。否则自己的网站加载也会很慢)
效果如下:
默认selectpicker

一些api

可以通过添加一些属性构建个性的select。

1.multiple

可以使select变为复选,即可以选多个。这时调用$("#selectId").val()返回的是一个数组(如果没有选择,返回null)。

<select class="selectpicker" multiple>
	<option>hello world!</option>
	<option>hello world!</option>
	<option>hello world!</option>
</select>

效果如下:
在这里插入图片描述

2.data-none-selected-text

修改select无选择时显示的文字。

<select class="selectpicker" multiple data-none-selected-text="请选择">
	<option>hello world!</option>
	<option>hello world!</option>
	<option>hello world!</option>
</select>

效果如图:
在这里插入图片描述

3.data-style

修改select的显示风格。例子:修改为btn-info风格(即提示信息按钮风格)

<select class="selectpicker" multiple data-none-selected-text="请选择" data-style="btn-info">
	<option>hello world!</option>
	<option>hello world!</option>
	<option>hello world!</option>
</select>

效果如下:
在这里插入图片描述

4.data-show-tick、data-live-search、data-none-results-text、data-actions-box、data-select-all-text、data-deselect-all-text

篇幅限制,直接介绍完几个常见的属性。
data-show-tick=“true”:在选中选项时显示对勾
data-live-search=“true”:显示选项搜索框
data-none-results-text=“没找到相应记录{0}”:在选项搜索框没有搜索到结果时提示语
data-actions-box=“true”:提供全选和取消全选按钮

<select class="selectpicker" multiple data-none-selected-text="请选择" data-style="btn-info" data-showTick="true" data-live-search="true"
		 data-none-results-text="没找到相应记录{0}" data-actions-box="true">
	<option>hello world!</option>
	<option>hello world!</option>
	<option>hello world!</option>
</select>

效果如下:
在这里插入图片描述
在这里插入图片描述

通过js控制

如果要为多个select添加如上效果,每个都写上属性的话代码太过臃肿。我们可以借用js实现动态添加。而且js也可以帮我们获取select值、动态改变内容等。通过selectpicker()方法可以调用提供的大量api。示例如下:

$("select").selectpicker({
	 showTick: true,
	 liveSearch: true,
	 noneResultsText: "没找到相应记录{0}",
	 actionsBox: true,
	 //取消全选按钮标题
	 deselectAllText: "取消全选",
	 //全选按钮标题
	 selectAllText: "全选"
});

上述代码为所有select元素添加了属性。

一些其他api

selectpicker(“refresh”)

可以刷新当前select状态,当select状态改变的时候调用可以更新外观,否则效果不显示(比如调用select.empty()方法后就需要调用此方法,不然不会清空)。

$("#selectId").selectpicker("refresh");

使用Ajax从服务器获取数据实现二级联动

前端代码

//为第一级select添加监听器
$("#fistSelect").change(function () {
	//清空二级select并刷新
    $("#secondSelect").empty();
    $("#secondSelect").selectpicker("refresh");
    //对一级select的值进行判断,避免向服务器传无用的数据引发异常
    if ($("#firstSelect").val() != null) {
    	//调用ajax方法
        $.ajax({
        	//服务器提供的接口,由后端选手提供(吐槽一句又前端又后端的我,真是又当爹又当妈)
        	//该网址返回一个JSON表达的数组(List,Set等)
            url: 'url',
            //向服务器发送的数据
            //注意用JSON.stringify()转换为JSON字符串,服务器接收的一般是一个JSON字符串而不应该是一个对象
            //服务器通过List<String>接收数组数据
            data: JSON.stringify($("#firstSelect").val()),
            //一些参数
            contentType: "application/json;charset-UTF-8",
            dataType: "json",
            type: "POST",
            //ajax成功调用后的回调函数,其中参数result就是服务器返回的JSON字符串表示的数组
            success: function (result) {
            	//遍历返回的结果数组,并把数组的内容添加到二级select中,并把添加的option的val设为该值
                result.forEach(secondSelectOption=> {
        			$("#secondSelect").append($("<option></option>").html(secondSelectOption).val(secondSelectOption));
			    });
			    //刷新
			    $("#secondSelect").selectpicker("refresh");
            }
        });
    }
});

后端代码

好了,我知道你后端也不太会。贴出Spring MVC的controller,当然用servlet也是完全可以的,只是取数据,转换数据为JSON比较麻烦,使用Spring MVC很方便。

//url为Spring MVC提供的访问网址,与前端ajax请求的网址要相同。
@RequestMapping("url")
//@ResponseBody表示网址返回JSON数据,并且可以对返回的所有Java对象自动转换为JSON格式
@ResponseBody
//@RequestBody标明参数是从ajax接收的数据,Spring MVC会把前端提供的数组JSON字符串自动封装为List
public Object secondaryLinkage(@RequestBody List<String> firstSelectVals) {
    //doSomeThing()根据自己的业务需求提供,
    List<String> result=doSomeThing(firstSelectVals);
    //直接把List返回,Spring MVC会把List转换为JSON数组
    return result;
}

总结

本文讲解了bootstrap风格的select,并提供了select通过Ajax实现二级联动的前后端代码。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值