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

IE 11-使用HTML4.01 DOCTYPE进行HTML5表单验证,html,validation,doctype,Html,Validation,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"/> 我的问题是

在旧项目中,我们使用此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显示带有红色边框的字段

  • 我知道我们可以使用
    novalidation
  • 我知道javascript格式可以重新考虑
  • 我知道我们可以增加maxlength以匹配格式化文本,并限制使用javascript键入

但我不知道的是,既然我们没有使用HTML5 doctype,为什么要运行HTML5验证?

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

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

对于(var f=document.forms,i=f.length;i--;){
f[i].setAttribute(“novalidate”,“novalidate”);
}

doctype实际上对浏览器在给定页面上支持哪种类型的JavaScript API没有任何影响。它只告诉浏览器要使用什么HTML/CSS呈现模式(在本例中)。至于IE7仿真模式,这里有一个相关的问题:@BoltClock谢谢。我试着删除IE7模拟模式的相同效果,所以我的最佳选择是建议添加所有形式的novalidation。