<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. 7.5 C/C++ 实现链表队列

    链表队列是一种基于链表实现的队列,相比于顺序队列而言,链表队列不需要预先申请固定大小的内存空间,可以根据需要动态申请和释放内存.在链表队列中,每个节点包含一个数据元素和一个指向下一个节点的指针,头节点 ...

  2. Python PyWin32 模块

    Python的生产效率极高,通过使用pypiwin32模块可以快速调用windows API函数,结合Python的高效开发能力,同等时间内比C++能更快的达到目标,pypiwin32模块封装了Win ...

  3. Python Fire:自动生成命令行接口

    命令行程序是平时写一些小工具时最常用的方式. 为了让命令行程序更加灵活,我们常常会设置一些参数,根据参数让程序执行不同的功能.这样就不用频繁的修改代码来执行不同的功能. 随着命令行程序功能的丰富,也就 ...

  4. MarkDown书写语法(常用格式)

    实际上每个 Markdown 应用程序都实现了稍有不同的 Markdown 语法,熟悉MarkDown书写语法常用格式,满足日常文字编辑需求 1.标题 请在单词或短语前面添加井号 (#) .# 的数量 ...

  5. 2023 ASP.NET Core 开发者路线图

    链接 ASP.NET Core Developer Roadmap

  6. HBase-compact的作用、两种实现方式、触发时机

    了解Flush触发条件后,这里产生了一个问题,频繁的flush会产生大量小文件,在对hbase进行查询时会产生大量IOPS,读取性能会受到很大的影响,同时也会给hdfs造成一定压力,hbase提供了一 ...

  7. Java基础综合测试

    Java版基础练习题: 输入练习: [问题描述] 任务很简单: 给定若干个整数,请编程输出它们的和. [输入形式] 输入包含多组测试用例. 每组测试数据首先是一个正整数N,表示本组数据有N个整数. 请 ...

  8. Spring Boot图书管理系统项目实战-11.检索图书

    导航: pre:10.借还统计 next: 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 2.1 index.html <!D ...

  9. win32 - 富文本控件的文本突出显示和文本撤销

    #define UNICODE #define _UNICODE #include <tchar.h> #include <windows.h> #include <wi ...

  10. pikachu SQL-inject insert/update注入

    insert 注入 (修改信息处是update注入,和此处同理) 注册页面,用户处输入 1' 发现报错信息 You have an error in your SQL syntax; check th ...