使用 ant-design选择器tags select进行模糊搜索和内容输入。
1.模糊搜索(不区分大小写)2.可输入(对单个标签只能输入英文字符、数字、短横线、下划线和小数点且10个字符内)3.所有标签总长度不超过100字符。
·
需求:
1.模糊搜索(不区分大小写)、
2.可输入(对单个标签只能输入英文字符、数字、短横线、下划线和小数点且10个字符内)、
3.所有标签总长度不超过100字符。
解决方案:
1.给a-select绑定属性:filterOption="filterOption"
该API为:是否根据输入项进行筛选。当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false。
实现代码:
filterOption(inputValue, option) {
//搜索不区分大小写
return (
option.componentOptions.children[0].text
.toLowerCase()
.indexOf(inputValue.toLowerCase()) >= 0
)
}
2.使用表单校验规则
使用
arr.every
((item, index, arr) => { return true }) 对每个输入标签进行校验;
使用
arr.reduce
((pre,cur) => { return pre+cur.length }, 0) 对所有标签进行校验
片段代码如下:
rules: {
assignLabels: [
{
required: true,
message: '请选择服务器标签',
trigger: 'change'
},
{
validator: checkassignLabels
}
]
}
const checkassignLabels = (rule, val. callback) => {
//对输入数组每一个标签字符进行校验
function checkEvery(el, index, arr) {
let labelReg = /^[a-z_A-Z-.0-9]{1,10}$/
return label.test(el)
}
//对总字符长度进行校验
let allLength = 0
allLength = val.reduce((pre, cur) => {
return pre + cur.length
}, 0)
//对输入数组每一个标签字符进行校验
if(val.every(checkEvery)) {
//对总字符长度进行校验
if(allLength < 101){
callback()
}else{
callback(new Error('总字符不能超过100'))
}
}else{
callback(
new Error('只能输入英文字符、数字、短横线、下划线和小数点且10个字符内')
)
}
}
实现效果:
更多推荐
所有评论(0)