在 jquery 掩蔽中限制遵循 mm/dd/yyyy?

Restriction to follow mm/dd/yyyy in jquery masking?

我在我的项目中使用 jquery 屏蔽来允许 mm/dd/yyyy 中的日期,如下所示

<script src="Scripts/jquery.maskedinput-1.2.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {

        //Input Mask for date of birth or date in general
        $("#txtDOB").mask("99/99/9999");

    });
</script>

但目前用户可以输入任何大于 12 和 0 的值作为月份。对于大于 31 的天数也是如此。在那儿 我可以限制的一种方式,以便用户不能为 mm 输入超过 12 或 0。同样,他可以连续几天输入超过 31 或 0 ?

我在提交时进行了 java 脚本验证,但是有没有办法在输入时进行限制?

可以尝试这样的事情

    if ($(day).val() > 31 || $(month).val() > 12 || $(year).val() > 2014) {
            $(this).val('');
    }

试试这个:

$("#txtDOB").mask('d/m/y', {'translation': {
    d: {pattern: /[0-2]?\d|3[0-1]/}, 
    m: {pattern: /0[1-9]|1[0-2]/},  
    y: {pattern: /[1-2]\d{3}/}
  }
});

UPDATED

the mask has three parts, dfor days, mfor months and y for years (you can switch the order if you want), and I have made 3 regex, one for each.

  • d 模式:有两个可能的匹配项(两个选项)由 |

    分隔
    • 第一个 [0-2]?\d 第一个数字应该是 0 up to 2([0-2]) 及其可选的 (?) 第二个数字可以是 0-9 (\d)
    • 第二个 3[0-1] 第一个数字是 3 第二个只能是 01
  • m 模式:有两个选项由|

    分隔
    • 第一个 0[1-9],如果月份以 0 开头,第二个数字可能是 1 to 9
    • 第二个1[0-2],如果月份以1开头,第二个数字只能是0 to 2
  • y模式[1-2]\d{3}:第一个数字可以是12,然后应该是3个数字[0-9]