IE 11-使用HTML4.01 DOCTYPE进行HTML5表单验证
在旧项目中,我们使用此doctype和此meta: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 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。