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 在提交时显示带有红色边框的字段。
- 我知道我们可以使用
novalidation
- 我知道可以重新考虑 javascript 格式
- 我知道我们可以增加最大长度以匹配格式化文本并限制输入 javascript。
但我不知道为什么 HTML5 验证是 运行 因为我们没有使用 HTML5 文档类型?
最后,我们在每个页面使用的页脚模板中添加了一个脚本,以添加 novalidate
以形成输入:
<script>
for(var f=document.forms,i=f.length;i--;) {
f[i].setAttribute("novalidate","");
}
</script>
在一个旧项目中,我们使用这个 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 格式
- 我知道我们可以增加最大长度以匹配格式化文本并限制输入 javascript。
但我不知道为什么 HTML5 验证是 运行 因为我们没有使用 HTML5 文档类型?
最后,我们在每个页面使用的页脚模板中添加了一个脚本,以添加 novalidate
以形成输入:
<script>
for(var f=document.forms,i=f.length;i--;) {
f[i].setAttribute("novalidate","");
}
</script>