antd 在进行表单验证的时候,如何做到唯一性验证?

表单验证的需要向后台发请求进行唯一性验证,实时校验;

目前方案是在input的onBlur中发请求,

但是体验不好,每次onBlur的时候都页面会闪一下,进行下一步操作还可能因为触发onBlur导致onClick不执行,需要点2次;

尝试过的解决方案,网上普遍方案是setTimeout,但是不生效;

尝试过的解决方案,用mousehover和mouseout,设置一个true/false,在执行onBlur的时候判断是否有下一步操作,
问题:如果键盘操作会有很多不可控因素,影响体验(可能还不如点击2次);

onBlur和onSubmit/onClick冲突是普遍性问题吧

表单唯一性验证的方法 有什么好办法吗?

基于 react + antd 没有jquery

新浪微博的注册页面好像可以做到唯一性校验,不过新浪微博注册页面很简单,好像没用到框架;

阅读 6k
3 个回答

不能把校验延后,在表单submit的时候提交到后端校验吗

antd的Form组件使用的是asyn-validator.
其中有个validator的验证就可以满足你的需求。

const fields = {
  asyncField:{
    validator(rule,value,callback){
      ajax({
        url:'xx',
        value:value
      }).then(function(data){
        callback();
      },function(error){
        callback(new Error(error))
      });
    }
  },
 
  promiseField:{
      validator(rule, value){
        return ajax({
          url:'xx',
          value:value
        });
      }
    }
};

把你使用的库版本信息放出啦,我在使用onblur的时候没有遇到你说的问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题