小编Kar*_*ari的帖子

AngularJS指令防止输入无效日期

我想要的是用户只输入一个有效的日期,但是我无法找到实现这一目标的好方法.

日期格式需要为"MM/DD/YYYY",因此我在输入上有一个掩码为"99/99/9999".虽然这会强制用户只键入数字并按照我需要的方式自动格式化,但问题是这允许用户键入类似"53/49/6540"的内容,这是一个无效的日期.

尝试1

将函数绑定到keypress/keydown事件.

  • 我有一个正则表达式,可以在键入时验证日期(例如,它允许"12"而不是"13").
  • 一切看起来都不错......但是......编辑时会开始显示一些奇怪的结果
    • 假设输入为"10/21/1999"
    • 他们想把月份改为"12".
    • 所以他们将光标放在"0"之后并按下退格键,
    • 值现在是"12/11/999"并且无效,阻止了输入
    • 或者,他们只是突出显示"0"并意外地点击"3"而不是"2",它将通过,变为"13/21/1999"然后无效,阻止进一步输入

尝试2

将函数绑定到keyup/changed事件.

  • 我得到旧值,新值并验证它,如果它无效,则返回旧值
  • 这会产生一种奇怪的用户体验,因为他们会看到他们输入的内容被删除和退回,我完全不喜欢
  • 如果用户无效,则不会让用户退格,因为它会将其还原
  • 如果键入足够快,仍然会通过无效数据

救命

是否有任何方法可以在他们输入日期时(而不是事后)验证日期,而不会发生奇怪的事情?

Plunkr显示问题: http ://embed.plnkr.co/0qbiiiRnIo9SuJ5xNe30/preview

javascript validation date angularjs

5
推荐指数
1
解决办法
1794
查看次数

标签 统计

angularjs ×1

date ×1

javascript ×1

validation ×1