宜搭下拉单选组件 SelectField 可以一键清空选中项,但是,目前宜搭下拉多选组件 MultiSelectField 没有提供一键清空选中项的功能。那就只能自己动手了,代码如下:
export function didMount() {
this.multiSelectFieldExtendClearMethod(['multiSelectField_receiveDepot:filter1', 'multiSelectField_goodsName:filter2'])
}
export function multiSelectFieldExtendClearMethod(fields) {
if (!fields) return;
fields.forEach(field => {
let cfg = field.split(':')
let id = cfg[0]
let index = cfg[1]
let el = document.getElementById(id)
if (!el) return
let ctrl = el.closest('.next-select-inner').querySelector('.next-input-control')
if (!ctrl) return
let span = document.createElement('span')
span.className = 'next-select-clear'
span.innerHTML = '<i class="next-icon next-icon-delete-filling next-medium"></i>'
ctrl.prepend(span)
ctrl.addEventListener('click', e => {
let n = e.target.className
if (n === 'next-select-clear' || n === 'next-icon next-icon-delete-filling next-medium') {
this.setState({ [index]: null })
setTimeout(() => {
let t1 = el.closest('.next-select-trigger.next-select-multiple.next-active')
if (t1) {
let t2 = t1.querySelector('.next-input-control .next-select-arrow')
if (t2) t2.click()
}
el.blur()
}, 100)
}
})
})
}
并在页面属性样式中增加如下代码:
.next-select-trigger.next-select-multiple:hover .next-select-clear{display: inline-block;z-index: 666;position: relative;}
注意:要给对应的下拉多选组件设置表单标识,如下图: