【问题标题】:Valid input not recognized by IE 11IE 11 无法识别有效输入
【发布时间】:2014-08-08 18:05:39
【问题描述】:

我的表单上有一个接受日期/时间的输入元素。它具有验证以检查它是否是有效的日期/时间。该字段的默认值是当前日期和时间。使用 Chrome 时,我可以多次更改此输入框的值,只要是有效的日期和时间,就会被接受。但是,在 IE 11 中,如果我将其更改为另一个有效的日期/时间,则表示无效值并且不允许保存表单。

日期/时间字段:

input#transit_date_arrived.form-control.date-time-picker(name='transit_date_arrived', ng-model='vehicle.transit_date_arrived', type='datetime')

在车辆模型中:

transit_date_arrived: {
            type: sequelize.DATE,
            allowNull: true,
            validate: {
                isDate: true
            }
        },

如果有人知道如何让它与 Internet Explorer 一起工作,我将不胜感激,谢谢!

【问题讨论】:

  • 加载表单时,如果日期/时间字段为空,是否将元素标记为无效?
  • 是的,这是必填字段

标签: angularjs internet-explorer-11


【解决方案1】:

IE 和 angularJS(实际上可能不仅仅是 a.JS)的一个问题是标记为 invalid 的字段在输入、选项卡或以其他方式交互时也会自发地变得“脏”。显然,这也适用于验证重置字段时,并且在第二次交互时也会发生同样的情况。

根据几个问题和一些研究,验证实际上在 IE 中非常糟糕。例如在this link,不可能确定文字空字符串和无效字符串。

This link展示了作者在实际日期验证中遇到的一些问题,包括错误处理和错误日期解决。不幸的是,他的代码破坏了“真实”日期的定义 - 即 0000.00.00 将被识别为有效日期,只是因为它的格式。

有一个日期验证示例here,您可能希望使用它来附加您的代码。特别是,您可能希望使用$valid$error.required

这里还有一段很丑的code,它打算允许以4步形式进行验证。

【讨论】:

    猜你喜欢
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多