记录一下解决Input限制只能输入汉字时中文输入法输入时有缺陷的问题

发布时间 2023-08-22 14:39:31作者: marvinLiu
<Form.Item getValueFromEvent={onEvent} >
        <Input maxLength={20} allowClear onCompositionEnd={(e)=>{onEnd(e,'clientName',true)}} onCompositionStart={onStart}/>
   </Form.Item>
 
 
  const onStart = ()=>{
    CHINESE_INPUT.status = true;
  }
 
  const onEnd = (e,name,acceptchinese)=>{
    CHINESE_INPUT.status = false;
    let val = e.target.value.replace(/[^\d]/g,'')
    if(acceptchinese){
      val = e.target.value.replace(/[^0-9\u4e00-\u9fa5]/g,'')
    }
    form.setFieldValue(name,val)
  }
 
  const onEvent = (e)=>{
    if(CHINESE_INPUT.status){//中文输入法正在打字
      return e.target.value;
    }
    return e.target.value.replace(/[^\d]/g,'')
  }