IE 11 - HTML5 使用 HTML4.01 DOCTYPE 的表单验证

IE 11 - HTML5 form validation with a HTML4.01 DOCTYPE

在一个旧项目中,我们使用这个 doctype 和这个 meta :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>

我的问题是 IE11(当然还有 IE10)启动了 HTML5 表单验证提交过程。

例如,在某个字段上 maxLength 是 5,出于某种原因,一旦检测到 blur 事件,某些 javascript 将其格式化 (12345 --> 12 345)。长度变为 6,因此 IE11 在提交时显示带有红色边框的字段。

但我不知道为什么 HTML5 验证是 运行 因为我们没有使用 HTML5 文档类型?

最后,我们在每个页面使用的页脚模板中添加了一个脚本,以添加 novalidate 以形成输入:

<script>
    for(var f=document.forms,i=f.length;i--;) { 
      f[i].setAttribute("novalidate","");
    }
</script>