【vue3+antd】实现InputNumber数字输入框复杂约束

官方文档:InputNumber

  • 要求:输入框内的值test①必须为a的整数倍(且增减按钮以a整数倍增减)②最小值为a③最大值为max④允许手动输入(且手动输入也需判断)
    在这里插入图片描述

    <a-input-number
            v-model:value="test"
            :min="a"
            :max="max"
            @change="change"
            :controls="false" //关闭自带的增减按钮
     >
     		//自定义增减按钮
            <template #addonBefore>
              <div class="cursor-pointer" @click="add">+</div>
            </template>
            <template #addonAfter>
              <div class="cursor-pointer" @click="minus">-</div>
            </template>
    </a-input-number>
      
      //限制直接输入时,test保持为a的整数倍
      //输入值的最大最小值由组件本身限制,antd的规则是还原至最大/最小值
      const change= () => {
    	 if ( test % a !== 0) {
    	 	 message.warning('test必须为a的整数倍');
     		 test = 0;//还原至0(根据需求决定,也可还原至最小值a)
    	}
      };
      
      //实现增按钮整数倍递增+限制增按钮递增时最大值为max
      const add = () => {
      	//此时的test并未递增成功,还是递增前的值
    	if (test + a> max) {
    		//自定义的增减按钮组件本身并不会去限制,若大于max,只会显示告警样式,但不会还原
      		message.warning('test不能大于max');
    	} else {
    	  	//需要注意的是,add方法完全自定义,也就是说递增依靠的是下面这一行代码
     		test =test + a;
    	}
      };
      
      //实现减按钮整数倍递减+限制减按钮递减时最小值为a
      const  minus = () => {
      //若此时test已经等于a(小于a是以防万一)
      	if ( test <= a ) { 
      		message.warning('test不能小于a');
      	}
      	else {
      		test =test - a;
      	}
      }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值