<template>
<Select v-model="innerValue"
:disabled="disabled"
:clearable='clearable'
@on-change="onChangeHandle">
<Option v-for="item in this.selectList"
:title="item.nameTitle"
:value="item.code"
:key="item.code"> {{ item.nameLimit }}
</Option>
</Select>
</template> <script>
export default {
name: 'SelectZenEmpty',
components: {},
props: {
disabled: {
type: Boolean,
default: false
},
value: {
type: String,
default: ''
},
clearable: {
type: Boolean,
default: false
}
},
data () {
return {
nameMaxSingleLength: 30,
innerValue: '',
selectList: []
}
},
watch: {
value (val) {
this.innerValue = val
}
},
computed: {},
methods: {
getSingleLength2 (str, length) {
let retLength = length
let len = 0
for (let i = 0; i < str.length; i++) {
const c = str.charAt(i)
if (escape(c).length > 4) {
len += 2
} else if (c !== "\r") {
len++
}
if (len >= length) {
retLength = i + 1
break
}
}
return retLength
},
getSingleLength (str) { // 中文2 英文 数字 1
return str.replace(/[^\\x00-\\xff]/g, "00").length
},
nameByLimit (name) {
if (this.getSingleLength(name) > this.nameMaxSingleLength) {
const singleLength = this.getSingleLength2(name, this.nameMaxSingleLength - 2)
console.info('singleLength', singleLength)
return name.substring(0, singleLength) + '...'
} else {
return name
}
},
nameByTitle (name) {
if (this.getSingleLength(name) > this.nameMaxSingleLength) {
return name
} else {
return ''
}
},
setSelectList (arr) {
if (arr.length > 0) {
this.selectList = arr.map(item => {
return {
...item,
nameTitle: this.nameByTitle(item.name),
nameLimit: this.nameByLimit(item.name)
}
})
} else {
this.selectList = arr
}
console.info('setSelectList this.selectList', this.selectList)
},
getItem (code) {
console.info('getItem code', code)
console.info('selectList', this.selectList)
return this.selectList.filter(item => {
return item.code === code
})[0]
},
onChange (code) { },
onChangeHandle (code) {
console.info('onChangeHandle', code)
// console.info('onChange', this.onChange)
this.$emit('input', code)
this.$emit('getItem', this.getItem(code))
this.onChange(code)
}
},
created () { },
activated () { },
mounted () { },
beforeDestroy () { }
}
</script> <style>
</style>

SelectZenEmpty 下拉框 支持 最大长度 超出... vue 组件的更多相关文章

  1. 动态改变ComboBox下拉框的宽度

    在C++Builder中有时下拉框的内容比较长,标准长度下根本显示不完,可以调用PostMessage()方法来实现 ::PostMessage(comb->Handle,CB_SETDROPP ...

  2. easyui combobox下拉框文字超出宽度有横向滚轮

    //下拉框显示横向滚轮 $(".combo").mouseenter(function(){ $(this).prev().combobox("showPanel&quo ...

  3. 前端组件:支持多选,支持选项筛选的下拉框选择器(基于Jquery和Bootstrap)

    效果图一:多选 效果图二:选项筛选 最后奉献源码,复制出来直接可用 <!DOCTYPE html> <html> <head> <meta charset=& ...

  4. jq插件又来了,模拟select下拉框,支持上下方向键哦

    好久没来了,更新下插件, 这个原理就是利用的 input[type='hidden']和自定义属性data-value捆绑传值操作的,可是设置默认选项,回调等参数,代码不多,比较简单,吼吼 (func ...

  5. 获取下拉框的文本值和value值

    http://www.cnblogs.com/djgs/p/3691979.html?utm_source=tuicool&utm_medium=referral 现在有一个Id为AreaId ...

  6. Js获取下拉框选定项的值和文本

    Js获取下拉框的值和文本网上提供了2种方法:但有些人很不负责任,他们根本没考虑到浏览器之间的差异导致的错误,导致很多新手琢磨了半天找不出错误! 下面我总结下Firefox和IE下获取下拉框选定项的值和 ...

  7. Js获取下拉框当前选择项的文本和值

    现在有一个Id为AreaId的下拉框,要获取它当前选择项的文本和值有以下方法: <span class="red">* </span> 地       区: ...

  8. 通过jquery来实现文本框和下拉框动态添加效果,能根据自己的需求来自定义最多允许添加数量,实用的jquery动态添加文本框特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. jQuery实现的3个基础案例(仿QQ列表分组,二级联动下拉框,模拟员工信息管理系统)

    1.仿QQ列表分组 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&quo ...

  10. jquery 分页 下拉框

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【二】

    相关文章: python处理Excel实现自动化办公教学(含实战)[一] python处理Excel实现自动化办公教学(含实战)[二] python处理Excel实现自动化办公教学(数据筛选.公式操作 ...

  2. Java并发编程面试题

    Synchronized 用过吗,其原理是什么? Synchronized是jvm实现的一种互斥同步访问方式,底层是基于对象的监视器monitor实现的. 被synchronize修饰的代码在反编译后 ...

  3. Java21 + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式

    目录 前言 相关技术简介 OpenAPI Swagger Springfox springdoc swagger2与swagger3常用注解对比 实现步骤 引入maven依赖 修改配置文件 设置api ...

  4. 小型命令解析器|minShell|多进程|重定向|进程控制【超详细的代码注释和解释】

    前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014. ...

  5. js转化文章发布于几天几小时几分钟前

    alert(dateFormat('2020-07-08 11:32:44')); function dateFormat(d1) { var dateEnd = new Date();//获取当前时 ...

  6. 主机--Host

    概念:主机是用于构建应用程序和服务.封装应用资源的对象,负责程序的启动和生命周期的管理,简单来说主机即应用程序. 主机运行:当主机运行的时候,他会将托管在服务容器集合里面注册的IHostService ...

  7. Linux 将命令的输出保存到文件

    当你在 Linux 终端中运行命令或脚本时,它会在终端中打印输出方便你立即查看.方法 1:使用重定向将命令输出保存到文件中你可以在 Linux 中使用重定向来达成目的.使用重定向操作符,它会将输出保存 ...

  8. Google全球分布式数据库:Spanner

    2012年的OSDI上google发布了Spanner数据库.个人认为Spanner对于版本控制,事务外部一致性的处理,使用TrueTime + Timestamp进行全球备份同步的实现都比较值得一看 ...

  9. NC17508 指纹锁

    题目链接 题目 题目描述 ​ HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁. ​ 该指纹锁的加密算法会把一个指纹转化为一个不超过1e7的数字,两个指纹数值之差越小,就说明两 ...

  10. scrcpy-Android投屏神器

    介绍 scrcpy 是免费开源的投屏软件,支持将安卓手机屏幕投放在 Windows.macOS.GNU/Linux 上,并可直接借助鼠标在投屏窗口中进行交互和录制. 下载scrcpy 解压. http ...