网页文本框限制输入的格式为1999-01-02,输入数字后 - 会自动加上

<!DOCTYPE html>

<html>

<head>

  <title>限制输入格式</title>

</head>

<body>

  <input type="text" id="dateInput" onkeypress="limitInput(event)" onkeyup="formatDate(event)">

  <script>

    function limitInput(event) {

      const input = event.target;

      const maxLength = 8; // 最大允许输入 8 个数字

      if (input.value.replace(/[^0-9]/g, '').length >= maxLength && event.keyCode !== 8) { // keyCode 为 8 表示 Backspace 键

        event.preventDefault();

      }

    }

    function formatDate(event) {

      const input = event.target;

      let value = input.value.replace(/[^0-9]/g, ''); // 移除非数字字符

      if (value.length > 8) {

        value = value.substr(0, 8); // 限制输入长度为 8

      }

      if (value.length >= 5) { // 处理年份和月份

        value = value.replace(/^(\d{4})(\d{0,2})(\d{0,2})/, function(match, p1, p2, p3) {

          // 限制月份最小为 01,最大为 12

          const month = p2 ? Math.min(Math.max(parseInt(p2, 10), 1), 12).toString().padStart(2, '0') : '';

          // 限制日期最小为 01,最大为 30

          const date = p3 ? Math.min(Math.max(parseInt(p3, 10), 1), 30).toString().padStart(2, '0') : '';

          return p1 + (month ? '-' + month : '') + (date ? '-' + date : '');

        });

      }

      input.value = value;

    }

  </script>

</body>

</html>

————————————————

版权声明:本文为CSDN博主「黯然神伤888」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/dante1987/article/details/133267906

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ES6新特性(2015) ES6的特性比较多,在 ES5 发布近 6 年(2009-11 至 2015-6)之后才...
    DudleyLi阅读 987评论 0 1
  • 方便起见不分parameter[形参,出现在函数定义中]和argument[实参,其值为传入函数的值],一律当作a...
    东月三二阅读 405评论 0 0
  • ECMAScript - 学习笔记 🎬 🧩nvm node.js 包管理工具 nvm github[https:/...
    Super三脚猫阅读 689评论 0 1
  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 2,018评论 0 2
  • Es6 1.数组 1.扩展运算符 是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参...
    林深不見鹿阅读 235评论 0 0