为什么我无法在 angular-imask 组件中输入年份的最后一个数字?

问题描述 投票:0回答:3

我正在尝试为字段配置 Angular-imask,但它不允许我输入年份的最后一位数字。它正确地显示了掩码,我可以很好地输入,但它会阻止在第三个数字之后进一步输入。 这是我现在用的面膜:

  imaskDate = {
   mask: Date,

   pattern: 'd/`m/`Y',  // Pattern mask with defined blocks, default is 'd{.}`m{.}`Y'

   blocks: {
     d: {
       mask: IMask.MaskedRange,
       from: 1,
       to: 31,
       maxLength: 2,
     },
     m: {
       mask: IMask.MaskedRange,
       from: 1,
       to: 12,
       maxLength: 2,
     },
     Y: {
       mask: IMask.MaskedRange,
       from: 1900,
       to: 9999,
     }
   },
   lazy: false,
  };

我无法使代码在代码片段中工作。它在这里工作:

https://stackblitz.com/edit/angular-tzovqf

有人知道这里发生了什么事吗?

编辑

这是一个已经闲置了 2 1/2 年的问题。我不记得当时到底发生了什么,现在也无法重现这个问题。我认为这可能是由于某些较旧的浏览器版本和/或库造成的。所以我不能接受任何答案。

遵循这个元问题中的建议,由于这个问题现在正在收到答案,我不会删除它。

我询问@iateadonut 和@abdessamad-aboukdir,他们回答请发布仍然发生此问题的环境,以便我可以尝试再次重现该问题。浏览器版本、操作系统、Angular 版本以及任何相关信息。

只有当有人能够提供证据证明我如何创建发生此问题的示例或发生问题的工作示例时,我才会接受答案。否则它将保持活动状态但无人应答。

如果任何版主认为我应该采取任何其他行动,请随时给出您想要的任何指示。

javascript angular masking
3个回答
2
投票

我无法让它与日期掩码一起使用,但这可以工作(来自 github 页面:https://github.com/uNmAnNeR/imaskjs/issues/557):

const maskProps = {
        mask: 'd/m/Y',
        lazy: false,
        overwrite: true,
        autofix: true,
        blocks: {
            d: { mask: MaskedRange, placeholderChar: 'd', from: 1, to: 31, maxLength: 2 },
            m: { mask: MaskedRange, placeholderChar: 'm', from: 1, to: 12, maxLength: 2 },
            Y: { mask: MaskedRange, placeholderChar: 'Y', from: 1900, to: 2999, maxLength: 4 },
        },
}

1
投票

autofix: true
添加到您的掩码中,以使该值适应每个块的可接受范围


0
投票

我遇到了同样的问题。您需要使用自己的

format
parse
方法。

https://github.com/uNmAnNeR/imaskjs/issues/100

© www.soinside.com 2019 - 2024. All rights reserved.