vue的el-select标签全选以及出现需要有禁用选项
首先说一下遇到这种问题的解决思路吧,很简单先去https://element.eleme.cn/#/zh-CN 这个官网上找到对应的需求,然后就是拼接数据的问题。
以下是全选的例子:
<el-select class="fr" v-model="searchJobType" style="width: 185px; margin-right:8px;" size="mini" type="text" multiple collapse-tags @change="changeSelect" placeholder="请选择类型查询">
<el-option v-for="(type,ind) in typeList" :key=ind :label="type.label" :value="type.value"></el-option>
</el-select> var Main = {
data() {
return {
searchJobType: ['ALL_SELECT','TSINPUT', '01', '02', '03', '04', '05', '07', '08', '09', '11', '12'],
oldSearchJobType: [],
typeList: [
{value: 'ALL_SELECT', label: '全部'},
{value: 'TSINPUT', label: '时序数据采集任务'},
{value: '01', label: 'RDBMS → HIVE全量'},
{value: '02', label: 'RDBMS → HDFS全量'},
{value: '03', label: 'RDBMS → HBASE全量'},
{value: '04', label: 'HDFS → RDBMS'},
{value: '05', label: 'HIVE → RDBMS'},
{value: '07', label: 'RDBMS → HIVE增量'},
{value: '08', label: 'RDBMS → HBASE增量'},
{value: '09', label: '文件 → RDBMS'},
{value: '11', label: '数据对象 → 数据对象'},
{value: '12', label: 'FTP服务器 → 文件系统'},
]
}
},
methods:{
changeSelect(val) {
const allValues = [];
// 保留所有值
for (const item of this.typeList) {
allValues.push(item.value)
}
// 用来储存上一次的值,可以进行对比
const oldVal = this.oldSearchJobType.length === 1 ? this.oldSearchJobType[0] : [];
// 若是全部选择
if (val.includes('ALL_SELECT')) this.searchJobType = allValues;
// 取消全部选中 上次有 当前没有 表示取消全选
if (oldVal.includes('ALL_SELECT') && !val.includes('ALL_SELECT')) this.searchJobType = [];
// 点击非全部选中 需要排除全部选中 以及 当前点击的选项
// 新老数据都有全部选中
if (oldVal.includes('ALL_SELECT') && val.includes('ALL_SELECT')) {
const index = val.indexOf('ALL_SELECT');
val.splice(index, 1); // 排除全选选项
this.searchJobType = val
}
// 全选未选 但是其他选项全部选上 则全选选上 上次和当前 都没有全选
if (!oldVal.includes('ALL_SELECT') && !val.includes('ALL_SELECT')) {
if (val.length === allValues.length - 1) this.searchJobType = ['ALL_SELECT'].concat(val)
}
// 储存当前最后的结果 作为下次的老数据
this.oldSearchJobType[0] = this.searchJobType;
},
}
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
原文链接:https://www.cnblogs.com/zhenggaowei/p/9828364.html
有时候还会遇到一种情况,有时候可能会根据某种条件导致不能选择某一个选项,就需要有禁用项。以下网站可参考的代码。
在el-option中,设定disabled值为 true,即可禁用该选项 <template>
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
</template> <script>
export default {
data() {
return {
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶',
disabled: true
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
value: ''
}
}
}
</script>
个人代码列子,我的工作需求是这样的。首先要选择分行进行工单推送,因为分行较多,所以很有可能这次推送了,下次再进行推送的又选中该分行了,这样就会造成该分行数据错乱问题,所以就需要有一个判断,已经推送的就显示为禁用项。
前台代码:
<el-select @change="changeBank()" v-model="bankIdList" multiple size="small" collapse-tags style="margin-left: 20px;"
placeholder="请选择分行(可多选)">
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="item.disabled">
</el-option>
</el-select>
// 加载所有分行
loadAllBranch() {
console.log(1);
this.utils.post(this,'allBranchForVue.do',{orderId:this.wo_id},d=>{
console.log(d);
this.options = d;
});
},
后台代码:
String orderId = request.getParameter("orderId");
List<WorkOrder> wList = null;
if(StringUtils.isNoneBlank(orderId)){
wList = workOrderService.getnameSXBybossID(orderId); //获取已经推送的分行信息
}
UserModel u = AuthUtil.getLoginUser(request);
//List<OrgModel> list = orgService.getAllBranch(u.getId());
List<OrgModel> list = orgService.getAllBranchForVue(); //获取所有分行
JSONArray json = new JSONArray();
for (OrgModel om: list) {
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",om.getId());
jsonObject.put("name",om.getName());
jsonObject.put("nameSX",om.getNameSX());
jsonObject.put("parent",om.getParent());
//QCQ20190712 判断是否已推送 已推送变灰色不可选 此功能暂时屏蔽
/*if(!wList.isEmpty() && StringUtils.isNoneBlank(om.getNameSX())){
for (WorkOrder wo: wList) {
if(wo.getWorkOrderId().contains(om.getNameSX())){
jsonObject.put("name",om.getName() + " (已推送)");
jsonObject.put("disabled",true);
}
}
}*/
json.add(jsonObject);
}
try {
response.getWriter().write(json.toString()); // 将JSON数据返回页面
} catch (Exception e) {
e.printStackTrace();
}
vue的el-select标签全选以及出现需要有禁用选项的更多相关文章
- jQ给下拉框绑定事件,为什么要绑定在框(select标签)上,而不是绑定在选项(option标签)上
这是我在学习锋利的 jquery 书中 5.1.4 的代码时遇到的一个小问题,源代码如下: <head> <style type="text/css"> * ...
- vue实现下拉框全选和输入匹配
实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...
- vue.js 批量删除跟全选,反选效果
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...
- Vue.js实现checkbox的全选和反选
小颖之前写的代码存在一个bug,就是当你选择全选的时候去掉后面的一个选项,再点全选结果就是反的了.很感谢博客园的朋友帮我改了这个问题嘻嘻,下面一起来看看具体是怎么实现的吧. 1.html <te ...
- vue开发购物车,解决全选单选问题
实现全选单选,在vue中无法通过this获取input中的checkbox的checked属性,但是可以通过vue对input的特殊方式v-model来实现对应数据的绑定,同样也可以通过这种方式实现购 ...
- Jquery 遍历 Table;遍历CheckBox ;遍历Select;全选/全不选
关于Jquery:相信大家已经很熟悉了,我最近的项目运用到关于Jquery的遍历事件:权当总结下: 遍历Table <table id="thistab"> < ...
- vue+vant实现购物车的全选和反选业务,带你研究购物车的那些细节!
前言 喜欢购物的小伙伴看过来,你们期待已久的购物车来啦!相信小伙伴逛淘宝时最擅长的就是加入购物车了,那购物车是如何实现商品全选反选的呢?今天就带你们研究购物车的源码,以vue+vant为例. 正文 首 ...
- 使用vue.js实现checkbox的全选和多个的删除功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 实现SELECT的全选,反选,AB选的JAVASCRIPT代码
参考网上,用原生JS粗糙实现. 我发现用UIKIT的BUTTON会自动刷新我那核心的模态窗口,只好用另外的LABEL或CODE标签了. $(".btn-select-all").c ...
随机推荐
- 浅聊TCP的三次握手和四次挥手
三次握手: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连 ...
- docker(11)Dockerfile 中的COPY与ADD 命令
前言 Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景. Build 上下文的概念 在使用 dock ...
- 【uva 534】Frogger(图论--最小瓶颈路 模版题)
题意:平面上有N个石头,给出坐标.一只青蛙从1号石头跳到2号石头,使路径上的最长便最短.输出这个值.(2≤N≤200) 解法:最小瓶颈树.而由于这题N比较小便可以用2种方法:1.最短路径中提到过的Fl ...
- Luogu T14448 区间开方
题面版权来自Shlw.题目链接 题目背景 无 题目描述 给定一个数列,元素均为正整数,对其以下两种操作: 1.将某区间每一个数变为其算术平方根(取整) 2.求出某区间内所有数的最大值 输入输出格式 输 ...
- Codeforces Round #647 (Div. 2) - Thanks, Algo Muse! D. Johnny and Contribution (贪心,模拟)
题意:有\(n\)个点,\(m\)条边,现在要给这些点赋值,,每次只能赋给某一点的四周(所连边)的最小没出现过的值.如果不能按照所给的数赋值,输出\(-1\),否则输出赋值顺序. 题解:我们用\(pa ...
- poj 2566 Bound Found 尺取法
一.首先介绍一下什么叫尺取 过程大致分为四步: 1.初始化左右端点,即先找到一个满足条件的序列. 2.在满足条件的基础上不断扩大右端点. 3.如果第二步无法满足条件则到第四步,否则更新结果. 4.扩大 ...
- PowerShell随笔2---初始命令
PowerShell便捷之处 PowerShell中兼容运行cmd的命令,比如 ipconfig.ping命令等 PowerShell的命令更友好,可读性更强.比如停止一个服务 CMD命令:sc st ...
- 流媒体传输协议之 RTP (上篇)
本系列文章将整理各个流媒体传输协议,包括 RTP/RTCP,RTMP,希望通过深入梳理协议的设计细节,能够给流媒体领域的开发者带来一定的启发. 作者:逸殊 审核:泰一 介绍 RTP,即 real-ti ...
- 第一个SpringMVC项目——HelloMVC
第一步:启动IDEA新建一个无模板的Maven项目,注意这还不是一个web项目,想成为web项目,需要添加web框架,这就是第二步需要做的事情 第二步:添加web框架支持 单击之后会弹出这个界面 第三 ...
- Building an IMAP Email Client with PHP
1 Building an IMAP Email Client with PHP http://www.toptal.com/php/building-an-imap-email-client-wit ...