多个输入框校验,最大值和最小值相互校验

<template>
  <div>
    <el-button type="text" @click="dialogVisible = true">点击打开 Dialog</el-button>

    <el-dialog title="提示" :visible.sync="dialogVisible" width="60%">
      <el-form :inline="true" :model="form" class="demo-form-inline" :rules="rules" ref="ruleForm">
        <el-form-item label="审批人" required>
          <el-form-item prop='rulesdi'>
            <el-input v-model="form.di" @input="checkNumber('di')" />
          </el-form-item>
          <el-form-item prop='rulesgao'>
            <el-input v-model="form.gao" @input="checkNumber('gao')" />
          </el-form-item>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="add">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data () {
    const validatedi = (rule, value, callback) => {
      const di = Number(value)
      const gao = Number(this.form.gao)
      if (di === '' || di == 0) {
        callback(new Error('请输入'));
      }
      if (isNaN(di)) {
        callback(new Error('请输入数字'));
      }
      if (di > gao) {
        callback(new Error('不能大于高'));
      }
      callback()
    };
    const validategao = (rule, value, callback) => {
      const gao = Number(value)
      const di = Number(this.form.di)
      if (gao === '' || gao == 0) {
        callback(new Error('请输入'));
      }
      if (isNaN(gao)) {
        callback(new Error('请输入数字'));
      }
      if (gao < di) {
        callback(new Error('不能小于低'));
      }
      callback()
    };
    return {
      dialogVisible: false,
      form: {
        di: '',
        gao: ''
      },
      rules: {
        rulesdi: [
          { required: true, validator: validatedi, trigger: 'blur' }
        ],
        rulesgao: [
          { required: true, validator: validategao, trigger: 'blur' }
        ],
      }
    }
  },
  methods: {
    add () {
      console.log(this.form);
    },
    checkNumber (type) {
      if (type === 'di') {
        this.$refs.ruleForm.validateField('rulesgao');
      } else {
        this.$refs.ruleForm.validateField('rulesdi');
      }
    },
  }
}
</script>

<style>
</style>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用 Vue 的动态组件和 v-for 指令来实现增加和删除多个输入框,并且可以通过 v-model 指令来获取输入框的值。 首先,在 Vue 实例中定义一个数组,用来存储输入框的值: ``` data() { return { inputs: [] } } ``` 然后,在模板中使用动态组件和 v-for 指令来创建多个输入框: ``` <template> <div> <component v-for="(input, index) in inputs" :key="index" :is="'input-' + index" v-model="inputs[index]" /> <button @click="addInput">Add Input</button> <button @click="removeInput">Remove Input</button> </div> </template> ``` 在上面的模板中,我们使用了组件的动态名称,每个输入框的名称都是 `input-0`, `input-1`, `input-2` 等等。在组件中,我们可以使用 `v-model` 指令来绑定输入框的值: ``` <template> <div> <input :value="value" @input="$emit('input', $event.target.value)" /> </div> </template> <script> export default { props: ['value'] } </script> ``` 在组件中,我们使用了 `props` 属性来接收输入框的值,并且在输入框发生变化时,使用 `$emit` 方法来更新输入框的值。 最后,在 Vue 实例中定义 `addInput` 和 `removeInput` 方法,来增加和删除输入框: ``` methods: { addInput() { this.inputs.push('') }, removeInput() { this.inputs.pop() } } ``` 在 `addInput` 方法中,我们向 `inputs` 数组中添加一个空字符串,这样就会增加一个输入框。在 `removeInput` 方法中,我们从 `inputs` 数组中删除一个元素,这样就会删除最后一个输入框。 这样,我们就完成了增加和删除多个输入框,并且可以通过 `inputs` 数组来获取输入框的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学不会•

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值