当表单填写时,实时监听输入的数据,当不相等时,提醒,且无法提交

输入时校验

javascript 复制代码
<template>
  <el-form :model="temp">
    <el-row :gutter="20">
      <el-col :span="12">
        <el-form-item label="服务台数" prop="equipmentNumber">
          <el-input v-model="temp.equipmentNumber" @input="checkEquipmentNumber" />
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="进口设备数量" prop="importNumber">
          <el-input v-model="temp.importNumber" @input="checkEquipmentNumber" />
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="国产设备数量" prop="domesticNumber">
          <el-input v-model="temp.domesticNumber" @input="checkEquipmentNumber" />
        </el-form-item>
      </el-col>
      <!-- 其他表单内容 -->
      <el-form-item>
        <el-button type="primary" :disabled="!isSubmitDisabled" @click="submitForm">提交</el-button>
      </el-form-item>
    </el-row>
  </el-form>
</template>

<script>
export default {
  data() {
    return {
      temp: {
        equipmentNumber: '',
        importNumber: '',
        domesticNumber: ''
      },
      isSubmitDisabled: false // 是否禁用提交按钮
    };
  },
  methods: {
    checkEquipmentNumber() {
      this.temp.equipmentNumber = Number(this.temp.equipmentNumber);
      this.temp.importNumber = Number(this.temp.importNumber);
      this.temp.domesticNumber = Number(this.temp.domesticNumber);

      if (this.temp.equipmentNumber !== this.temp.importNumber + this.temp.domesticNumber) {
        this.$message.error('服务台数应等于国产设备数量与进口设备数量之和');
        this.isSubmitDisabled = true;
      } else {
        this.isSubmitDisabled = false;
      }
    },
    submitForm() {
      // 提交表单逻辑...
    }
  }
};
</script>

上述代码中,我们添加了@input="checkEquipmentNumber"事件监听器到每个输入框,每当输入值发生变化时会触发该方法进行校验。同时,我们通过isSubmitDisabled变量控制提交按钮是否禁用。如果设备数量不符合条件,则显示错误信息并禁用提交按钮。

离开时校验

当想需要的是当输入并且鼠标离开时

如果你想在用户输入后点击或鼠标离开输入框时再进行验证,可以使用blur事件代替input事件。以下是修改后的代码:

javascript 复制代码
<template>
  <!-- ...其他代码不变... -->
  <el-form-item label="服务台数" prop="equipmentNumber">
    <el-input v-model="temp.equipmentNumber" @blur="checkEquipmentNumber" />
  </el-form-item>
  <el-form-item label="进口设备数量" prop="importNumber">
    <el-input v-model="temp.importNumber" @blur="checkEquipmentNumber" />
  </el-form-item>
  <el-form-item label="国产设备数量" prop="domesticNumber">
    <el-input v-model="temp.domesticNumber" @blur="checkEquipmentNumber" />
  </el-form-item>
  <!-- ...其他代码不变... -->
</template>

<script>
// ...其他js部分(data和methods)不变...
</script>

这样,每次用户离开这三个输入框时,都会触发checkEquipmentNumber函数进行验证。注意,如果用户没有离开输入框直接提交表单,此时可能不会执行最新的验证,所以在提交表单前也可以再次进行一次验证以确保数据正确性。

相关推荐
AstartesEternal5 小时前
python第二次作业(列表,字典)
开发语言·python
小林ixn5 小时前
React + TypeScript 实战:从“类型体操”到“数据持久化”,一次讲透组件通信与副作用管理
前端·react.js·typescript
何时梦醒5 小时前
React + TypeScript 企业级开发实战:从零搭建到组件架构演进
前端·react.js·全栈
Coffeeee5 小时前
AGP9.0的主要变更项,给Gradle来一次大变样
android·前端·gradle
星恒随风6 小时前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
数聚天成DeepSData6 小时前
外贸海关进出口数据去哪免费下载?从统计到明细的查找指南
linux·服务器·开发语言·前端·网络·人工智能·自然语言处理
再卷也是菜6 小时前
C++11支持并发库
开发语言·c++
Lhan.zzZ6 小时前
QML 开发中的“陷阱”:动态模型更新时,ComboBox 索引为何总是失效?
开发语言·qt
半夜里咳嗽的狼6 小时前
组件进侧栏就变形?用 CSS Container Queries 把响应式边界收回组件
前端·css
xx24066 小时前
前端性能优化笔记
前端·笔记·性能优化