【问题标题】:How can I change the format of this input? [duplicate]如何更改此输入的格式? [复制]
【发布时间】:2016-01-07 08:48:14
【问题描述】:

我在 js 中有这个脚本:

编码 HTML:

<input class="required-input" type="text" name="date_of_birth" id="date_of_birth" placeholder="MM/DD/YYYY">

代码 JS:

$('.required-input').each(function() {
             $(this).on('input keyup keypress blur change', function() {
        const dob=  /^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$/;
        var regex;

        if ($(this).attr("id") == "date_of_birth") 
            {
                 regex = dob;
            }

        //SOME CODE JS:

         });
     });

我想要这些东西:

1.成为下一个格式23/09/1992

2.你不能写多余的字符。

3.不能写字母,只能写数字

如何将这个变量(dob)改成好的?

提前致谢!

【问题讨论】:

  • 为什么不使用 jquery 日期选择器呢?
  • 取决于您必须支持的浏览器(基于const,我猜只有现代的)您可以使用date 类型的输入。这将照顾你想要的大部分。它具有内置验证功能。内置在浏览器中。这样你就不需要正则表达式w3schools.com/html/tryit.asp?filename=tryhtml_input_date
  • 您的 dob 正则表达式适用于 DD/MM/YYYY 日期模式,但您有 placeholder="MM/DD/YYYY"。如果您计划仅支持 / 分隔符,请从 [./-] 类中删除其他分隔符。并且/ 必须在文字符号正则表达式中进行转义。
  • 是的,但是例如如果用户写:23091992...我想在 23/09/1992 自动转换此文本
  • 看看this demo。如果您使用 JQuery,我认为这就是您所需要的。

标签: javascript regex validation


【解决方案1】:
^(19|20)\d\d(/)(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$

请参阅here 了解更多信息。


你还可以看到 jQuery Mask


考虑也使用原生 HTML5 验证属性:

【讨论】:

  • 是的,但如果用户键入 23091992,则不会自动转为该格式
  • 也许你需要jQuery Mask
猜你喜欢
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
相关资源
最近更新 更多