You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中Ant Design表单提交时除最后一项外其余校验卡在Pending状态

问题根因

你所有自定义校验函数共用了同一个checkPending定时器变量,全局表单校验会同时触发所有字段的校验逻辑,前一个校验刚创建的定时器会被后一个校验的clearTimeout直接清除,导致除了最后一个执行的校验项之外,其余所有校验的回调函数永远不会被触发,async-validator在校验所有回调返回前会一直处于pending状态,就出现了你看到的卡住问题。

修复方案

给每个校验函数单独分配独立的定时器变量,不要共用全局的checkPending,修改后data部分代码如下:

data() {
    // 每个校验函数单独维护自己的防抖定时器
    let checkGitPending, checkModulePending, checkStagePending;
    let checkModuleNumber = (rule, value, callback) => {
      clearTimeout(checkModulePending);
      if (!value) {
        return callback(new Error('Please input the number'));
      }
      checkModulePending = setTimeout(() => {
        if (!Number.isInteger(value)) {
          callback(new Error('Please input digits'));
        } else {
          if (value < 1) {
            callback(new Error('Module number must at least be 1!'));
          } else {
            callback();
          }
        }
      }, 1000);
    };
    let checkGitAddress = (rule, value, callback) => {
      clearTimeout(checkGitPending);
      checkGitPending = setTimeout(() => {
        if (!value.endsWith(".git")) {
          callback(new Error("Please enter clone address that ends with .git!"));
        } else {
          callback();
        }
      }, 1000);
    };
    let checkModuleStage = (rule, value, callback) => {
      clearTimeout(checkStagePending);
      checkStagePending = setTimeout(() => {
        if (value.some((x) => x === "2") && value.some((x) => x === "3")) {
          callback(
            new Error(
              "You have selected both Stage 2 and Stage 3. Only one can be selected:"
            )
          );
        } else {
          callback();
        }
      }, 1000);
    };
    // 剩余原有data逻辑保持不变
}

其余表单、规则、提交方法的代码不需要改动,修改后全局校验就可以正常执行完成。

额外优化提示

你当前checkModuleStage的逻辑是判断用户同时选择了Stage2和Stage3,但是原代码的错误提示写成了「同时选择了Stage1和Stage2」,可以同步修正下提示内容,避免用户理解偏差。

内容的提问来源于stack exchange,提问作者demid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:33:03