Kar*_*ari 5 javascript validation date angularjs
我想要的是用户只输入一个有效的日期,但是我无法找到实现这一目标的好方法.
日期格式需要为"MM/DD/YYYY",因此我在输入上有一个掩码为"99/99/9999".虽然这会强制用户只键入数字并按照我需要的方式自动格式化,但问题是这允许用户键入类似"53/49/6540"的内容,这是一个无效的日期.
尝试1
将函数绑定到keypress/keydown事件.
尝试2
将函数绑定到keyup/changed事件.
救命
是否有任何方法可以在他们输入日期时(而不是事后)验证日期,而不会发生奇怪的事情?
Plunkr显示问题: http ://embed.plnkr.co/0qbiiiRnIo9SuJ5xNe30/preview
经过更多的尝试后,我找到了一个令我满意的解决方案。如果有人好奇的话我想我会分享:
普朗克: http://embed.plnkr.co/gE1WXaXsYI7zpWPkmvVS/preview
基本上,我偶然发现了元素的“selectionStart”和“selectionEnd”属性,它们允许您获取在按键时插入新值的索引。因此,我能够通过获取旧值并将输入的字符插入正确的位置来获得“新值”,对其进行验证,并防止按键无效。
我做的另一件事不同的是,去掉屏蔽插入的所有斜杠和空格(_ _ / _ _ / _ _ _ _),并将我的正则表达式更改为仅根据数字进行验证(例如“12121900”),这允许用户可以在任何时候退格/插入字符,而不会出现奇怪的“123/19/90”类型的变化,从而失败。
它并不完全完美,但至少更好。
| 归档时间: |
|
| 查看次数: |
1794 次 |
| 最近记录: |