当前位置: 首页 > 知识库问答 >
问题:

防止输入无效日期的AngularJS指令

胥智
2023-03-14

尝试1

将函数绑定到KeyPress/KeyDown事件。

  • 我有一个regex可以在输入日期时验证日期(例如,它允许“12”但不允许“13”表示月份)。
  • 看起来都不错。但是...编辑时开始显示一些奇怪的结果
    • 假设输入为“10/21/1999”
    • 他们想把月份改成“12”。
    • 所以他们把光标放在“0”后面,然后点击退格键,
    • 值现在为“12/11/999”并且无效,阻止输入
    • 或者,他们只是突出显示“0”,不小心打到“3”而不是“2”,它将通过,变成“13/21/1999”,然后无效,阻止进一步的输入
      null

共有1个答案

太叔昊苍
2023-03-14

在玩了更多之后,我能够想出一个我满意的解决方案。我想我会分享,以防有人好奇:

Plunkr:http://embed.plnkr.co/ge1wxaxsyi7zpwpkmvvs/preview

基本上,我偶然发现了元素的“SelectionStart”和“SelectionEnd”属性,它们允许您获取键按下时插入新值的位置的索引。因此,我能够得到“新值”,可以说,通过获取旧值并将键入的字符插入正确的位置,验证它,并防止按下无效键。

 类似资料:
  • 问题内容: 我有一个活动的编辑页面,我的一个字段是日期。在某些浏览器中,它看起来像纯文本框(IE8),但是在chrome中,它显示“ dd / mm / yyyy”,如果单击它,它还有一些其他选项可用于设置日期。 我的问题是在编辑页面上,它没有填充现有日期(我想是因为日期格式不正确?)。MVC控制器以“ 2014-03-08T00:00:00”格式返回数据(仅使用基本的CRUD控制器操作)。 我已

  • 问题内容: 我遇到的问题是PrimesFaces 3.4.1日历。当使用通过按钮或在输入字段焦点上激活的弹出日期选择器时,您只能选择有效的日期,该日期很好,很开心! 当您在输入字段中手动添加日期时,就会出现问题,如果您添加了无效日期,PrimeFaces日历组件会尽最大的努力将其转换为有效日期然后发送,这意味着后端验证是不可行的。以下是一些有趣的翻译: 30/02/2012变成2/6/2014 3

  • 我试图将用户输入转换为datetime值,但它在shell脚本中给出了无效的日期错误 $5用户正在输入2015年12月3日$6用户正在输入00:10:00

  • 我有一个蓝牙条形码扫描仪附在Android平板电脑上。硬件键盘在Android设置中被禁用。这让我既可以扫描条形码,又可以使用软键盘打字。 当我扫描条形码时,我的活动按预期捕获所有键。但是软键盘出现了。 但什么都没起作用。当应用程序按下硬件键时,软键盘就会出现。

  • 问题内容: 我想知道是否有可能扩展Angular的输入指令?我想将一些侦听器附加到页面上的所有输入字段。我认为您可以使用来装饰现有模块,但我不知道如何使用指令(更确切地说是输入指令)来完成此操作。 那么,谁能将我推向正确的方向呢?一些例子? 编辑 到目前为止,这是我的指令: 在我看来,可以将其添加到输入字段中,如下所示: 缺点是,对于每个输入字段,我都必须在代码中手动附加此侦听器。因此,更改现有的