宜搭 MultiSelectField 下拉多选组件如何一键清空选中项?

宜搭下拉单选组件 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;} 

注意:要给对应的下拉多选组件设置表单标识,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值