Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs$在firefox中的日期报告错误时有效_Javascript_Angularjs_Validation_Date_Firefox - Fatal编程技术网

Javascript angularjs$在firefox中的日期报告错误时有效

Javascript angularjs$在firefox中的日期报告错误时有效,javascript,angularjs,validation,date,firefox,Javascript,Angularjs,Validation,Date,Firefox,我注意到firefox中日期的表单验证存在一个问题,如果您能提供任何建议或有用的解决方法,我将不胜感激 日期验证问题 我使用的是angularjs v1.3.11,我遇到的问题实际上是引导数据采集器的问题,但是对于标准输入类型=“日期”字段来说,这是相同的问题 如果我使用bootstrap datepicker或表单上的输入type=“date”字段$valid将无效的闰日(例如2013年2月29日(en GB日期-DD/MM/yyyyy))放入文本字段,则该字段在所有浏览器上都会报告为无效,并

我注意到firefox中日期的表单验证存在一个问题,如果您能提供任何建议或有用的解决方法,我将不胜感激

日期验证问题

我使用的是angularjs v1.3.11,我遇到的问题实际上是引导数据采集器的问题,但是对于标准输入类型=“日期”字段来说,这是相同的问题

如果我使用bootstrap datepicker或表单上的输入type=“date”字段$valid将无效的闰日(例如2013年2月29日(en GB日期-DD/MM/yyyyy))放入文本字段,则该字段在所有浏览器上都会报告为无效,并接受firefox。我真的希望它在每个浏览器上都报告为无效

它似乎使日期无效,例如,如果我在字段中输入完整的垃圾,比如输入一个没有月份的日期,那么在我测试过的所有浏览器中,29/2013都会正确地报告为无效。就好像angular在为firefox运行一个特殊的正则表达式,它不关心日期的有效性,只关心其中有3组数字

在angular网站上查看此日期问题

如果您选择以下链接,您将被带到angulars自己的输入[日期]记录

按照firefox中的链接-滚动到页面底部,找到他们在屏幕上显示的示例,并键入无效日期,如2013年2月29日(该网站上firefox似乎需要ISO日期格式),您将看到它报告您输入的日期为有效日期,尽管2013年没有2月29日,因为它不是闰年

例如,如果您在chrome中执行相同的测试,您将看到它将日期报告为无效——这就是我希望发生的事情

如何解决此问题? 谢谢你,如果你能读到这里!我意识到这可能是一个特定浏览器如何处理日期的问题,尽管我已经搜索了很多地方,在firefox或angular中都没有发现任何列出的错误

我在这里真正希望的是,有人可能知道一种变通方法,例如,一种截取在输入字段上确定$valid的调用的方法,这样我就可以运行自己的正则表达式或类似的东西。如果有人知道这在firefox中为何如此奇怪,我也想知道

提前感谢任何人提供的任何帮助:)


Lindsay

您需要更复杂的日期逻辑来确定日期是否有效。我建议使用第三方库(如moment.js或date.js)来执行日期验证逻辑

对于以下问题,请尝试接受答案底部的演示链接:

输入2013-02-29,将正确识别无效日期


在Firefox、IE和Chrome上测试。

非常感谢您,您的解决方案很有意义。我似乎使用了错误版本的Moment,因为它接受了真正随机的事情作为日期,例如一个位数,但这显然是另一个问题,在旧版本的Moment中!我不确定我是如何下载了这么旧的版本,但我会解决这个问题,我相信一切都会好起来:)