blur与click事件冲突

场景:页面布局上有一个input和一个button,input绑定了一个onblur事件,button绑定了一个onclick事件,当向input输入值后点击button,此时会先触发onblur事件,然后触发onclick事件。在有些业务场景中需要在点击button时不触发onblur,该如何来避免呢?

首先要知道事件优先级onblur > onclick,所以在onclick中做所有的限制都是没有用的。但是onmousedown事件优先级是高于onblur的,把绑定onclick事件换成onmousedown,然后在onmousedown事件中使用e.preventDefault()阻止默认行为,执行完onmousedown事件后不会再去执行onblur事件。

const Event = (props: IProps) => {

  const click = (e: React.MouseEvent) => {
    e.preventDefault();
  }

  const blur = (e: React.FocusEvent) => {
    console.log('blur', e)
  }

  return 
}

你可能感兴趣的:(blur)