对input输入框做日期输入限制的几种方法

这篇具有很好参考价值的文章主要介绍了对input输入框做日期输入限制的几种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用户输入一个日期的时候,我们如何对其做一个输入限制呢?试想一下,如果你输入一个13月份出来,直接弹框提醒你,会觉得冗余界面复杂,我们可以直接清掉这个3。此外,假如我们希望别人输入的日期格式如下:2024.01.12时,应该如何来规定呢?

QQ录屏20240112102820

首先,我们第一个想到的应该是使用正则来匹配

   const regex = /^\d{4}\.\d{2}\.\d{2}$/;

除了正则外,想达到一个边输入边验证输入是否合法的效果,使用事件和监听来做。

1.首先写一个input输入框,v-model绑定一个值,对input使用@input事件。

 <el-input v-model="baseData.recTime"  placeholder="不填写则为系统默认时间"
                @input="validateAndFormatDateInput"></el-input>

 2.判断哪些位是小数点,哪些位是数字,当然这儿我限制的并不完全,比如说第九位不能大于3,第九位为3时,第十位不能大于1。这里只是给大家做一个参考:

 validateAndFormatDateInput() {
      // 获取输入框的值
      let inputValue = this.baseData.recTime || '';
      // 一边输入一边判断
      if (
        (inputValue.length === 5 && inputValue[4] !== '.') ||  // 第五位不是小数点
        (inputValue.length === 8 && inputValue[7] !== '.') ||  // 第八位不是小数点
        (inputValue.length === 1 && isNaN(parseInt(inputValue[0]))) ||// 第一位不是数字
        (inputValue.length === 2 && isNaN(parseInt(inputValue[1]))) ||
        (inputValue.length === 3 && isNaN(parseInt(inputValue[2]))) ||
        (inputValue.length === 4 && isNaN(parseInt(inputValue[3]))) ||
        (inputValue.length === 6 && parseInt(inputValue[5]) > 1) ||  // 第六位大于1
        (inputValue.length === 9 && parseInt(inputValue[8]) > 3)  // 第九位大于3
      ) {
        // 不符合条件,移除最后输入的字符
        this.baseData.recTime = inputValue.slice(0, -1);
      }
      // 只保留符合格式的字符
      this.baseData.recTime = this.baseData.recTime.replace(/[^\d.]/g, '');
    }

 除此外使用watch来监听:文章来源地址https://www.toymoban.com/news/detail-811685.html

 "baseData.recTime": {
      handler(newVal, oldVal) {
        console.log(newVal, oldVal);

        if ((oldVal + "").length > (newVal + "").length) {
          return;
        }

        clearTimeout(this.watchTimer);
        this.watchTimer = setTimeout(() => {

          this.baseData.recTime = newVal.replace(/[^\d\.\s]/g, "");
          let _value = newVal.replace(/[^\d.]/g, "") + ""; //去掉除开数字和小数点
          console.log(_value);
          this.baseData.recTime = _value;
          if (_value == 0) {
            this.baseData.recTime = "";
            return;
          }
          if (_value.length <= 4) {
            let _len = _value.length;
            if ((_value.replace(/\D/g, "") + "").length != _len) {
              this.baseData.recTime = _value.replace(/\D/g, "");

              return;
            }

            if (_value.length == 4) {
              this.baseData.recTime = _value + ".";
            }
          }

          if (_value.length > 4) {
            let _stepValue1 = _value.slice(0, 4);
            let _len = _stepValue1.length;
            if ((_stepValue1.replace(/\D/g, "") + "").length != _len) {
              this.baseData.recTime = _stepValue1.replace(/\D/g, "");
              return;
            }
            if (_value.length == 5) {
              if (_value[4] != ".") {
                this.baseData.recTime = _value.slice(0, 4);
                return;
              }
            }
            if (_value.length > 5) {
              if (_value[5] != "1" && _value[5] != "0") {
                this.baseData.recTime = _value.slice(0, 5);
                return;
              }
              if (parseInt(_value[6]) > 2 && _value[5] == "1") {
                this.baseData.recTime = _value.slice(0, 6);
                return;
              }
              if (_value.length > 7) {
                this.baseData.recTime = _value.slice(0, 7);
                return;
              }
            }
          }
        }, 100);
      },
      immediate: false,
      deep: true
    },

到了这里,关于对input输入框做日期输入限制的几种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 限制 SLS告警通知时段的几种常见方法

    在对系统进行监控告警的过程中,有时候并非在任何时候都要接收告警通知,例如以下场景: 计划内变更触发的已知告警可以无需通知 非工作时间不接收不严重的告警 夜里不接收电话告警 等等 本文会介绍几种常见的限制告警通知时段的方法,以及它们各自所适用的场景。

    2024年02月02日
    浏览(30)
  • input限制只能输入数字,限制输入数字长度或者大小

    1.限制只能输入数字 方式一 :此方式只能控制输入的内容是数字,不能控制是否是正负数 方式二 :此方式可控制输入的内容是数字 了解一下 js replace : 拓展 1.限制输入的数字长4位 了解一下 js slice : 2.限制输入的数字最大值为10 3.限制输入的数字最小值为0 4.限制长度,大小

    2024年02月11日
    浏览(56)
  • input 输入框限制只能输入两位有效小数

    前端入门即教学,今天博主分享几个前端金额实用的小案例,复制拿过去就能用哦!    相信有很多前端小伙伴在工作中遇到过这样的需求,就是限制输入框内容只能输入两位小数吧,想了用正则但是又不知道怎么下手的同学,接下来博主分享一个小案例,下次遇到这个的时

    2024年02月01日
    浏览(32)
  • input输入限制:自动补全两位小数、金额限制两位小数、只能输入正整数

    金额自动补全两位小数 限制只能输入正整数 金额限制两位小数 金额限制两位数,支持输入负数

    2024年04月17日
    浏览(27)
  • QT子线程或自定义类操作访问主界面UI控件的几种方法

            QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式: (1)例如有个自己定义的类CustomClass,在自定义类里包含主界面指针MainWindow * class MainWindow;   class CustomClass { public:     CustomCla

    2024年02月09日
    浏览(45)
  • vue前端el-input输入 限制输入位数以及输入规则

    前端兼容el-input输入时,仅允许输入负号、数字以及小数点,且限制整数位数以及小数位数,且不允许输入除第一个负号以外的其他符号 1、使用element-ui插件的el-input组件作为页面元素,为其绑定input事件(我这里是在表格里使用slot插入的inpu元素,所以传入参数使用scope传入)

    2024年02月09日
    浏览(30)
  • 限制 el-input 输入 emoji

    快捷键 win+; 或 win+.

    2024年02月12日
    浏览(37)
  • vue限制input框输入特殊字符和汉字

    在设计vue输入框时,限制input框输入特殊字符和汉字。 一开始参考此博客:https://blog.csdn.net/ks8380/article/details/96478522 进行特殊字符的限制, 代码如下: 此方法可以实现对特殊字符的限制,但当微软自带输入法输入中文时却会自动识别字母,此字母搜索框并未获取且无法正常

    2024年02月11日
    浏览(33)
  • el-input限制输入整数等分析

    input 限制输入在平时的需求比较常见,例如限制输入非数字,限制输入整数,限制输入的小数位数等等。这里分析下各种实现方式。 使用 type 属性为 number :将 el-input 的 type 属性设置为 number ,这将限制用户只能输入数字。然而,这种方式仍然允许输入小数。如果你希望只接

    2024年02月05日
    浏览(38)
  • 【限制输入框值类型】自定义指令el-input输入类型限制,vue和html两个版本

    经常遇到输入框需要限制只能输入数字的, 因为用户很离谱,明显输入数字的地方他非要输入英文或者中文 但是用到UI框架或者自己写方法验证表单比较麻烦 为了一个输入框专门去弄一个验证很麻烦 所以这里就整合了两种自定义指令的方式,更加方便使用 vue版本和 html版本

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包