Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML5输入验证不需要';我不在IE8工作_Html_Internet Explorer 8_Modernizr - Fatal编程技术网

HTML5输入验证不需要';我不在IE8工作

HTML5输入验证不需要';我不在IE8工作,html,internet-explorer-8,modernizr,Html,Internet Explorer 8,Modernizr,你好,互联网上善良的人们, 我已经对此进行了一段时间的黑客攻击……并且看到了一些类似的帖子,但我似乎无法理解这一点: HTML5输入字段验证CSS可以在Firefox、Chrome中使用……但是,唉,不是在IE8中使用……我的很多目标用户都会使用IE8 …是的:我正在使用Modernizer,我使用Initializer获得页面模板和CSS…我有点困惑为什么我不能在IE8中正常工作 以下是指向我的测试页面的链接: 在正确输入之前,输入字段为红色,然后在输入有效帐号时,验证将变为绿色,例如: 5

你好,互联网上善良的人们, 我已经对此进行了一段时间的黑客攻击……并且看到了一些类似的帖子,但我似乎无法理解这一点:

HTML5输入字段验证CSS可以在Firefox、Chrome中使用……但是,唉,不是在IE8中使用……我的很多目标用户都会使用IE8

…是的:我正在使用Modernizer,我使用Initializer获得页面模板和CSS…我有点困惑为什么我不能在IE8中正常工作

以下是指向我的测试页面的链接:

在正确输入之前,输入字段为红色,然后在输入有效帐号时,验证将变为绿色,例如: 50011111111

HTML5代码如下所示:

<label for="account">Account Number: </label> 
<input id="account" name="inputAccount" 
  placeholder="input billing account number" 
  pattern="/(^500)|^\d{11}" 
  required
  autofocus
  type="text"/>
账号:

任何关于可能是一件相当简单的事情的建议都将非常感谢

我认为,您仍然缺少的是用于字段验证的html5 polyfill。例如,您可以使用:


更多的polyfills可以在下面找到:

IE8不支持所有HTML5元素(如果有的话)。你需要有一个插件,html5才能工作。一个插件是


他们在HTML5中的分数/兼容性,即忽略HTML5元素,因为它不知道它们。从《现代化文件》

Modernizer在JavaScript中运行一个小循环来启用 来自HTML5(以及abbr)的各种元素,用于互联网中的样式设计 探索者请注意,这并不意味着它突然使IE支持 音频或视频元素,它只是意味着你可以使用部分 而不是div并在CSS中设置样式

这意味着Modernizer将告诉IE HTML5中的新标签,这样你就可以在它们上面使用CSS,但实际上并没有让它们做任何事情。还要注意的是,Modernizer没有为元素添加默认样式,因此他们建议您使用HTML5 CSS重置,使标签显示为block例如

关于您的表单验证,topek正确地解释了Modernizer只检测浏览器功能,实际上并没有做任何事情。Modernizer背后的过程是,您使用内置的yepnope测试功能查看用户的浏览器是否可以执行“x”(在本例中为表单验证),然后有条件地和异步地加载脚本或样式以“polyfill”(礼貌地说“使用javascript模拟本机行为”)

在您的情况下,您需要使用
modernizer.load()
来测试
modernizer.input.required
以及可能的
modernizer.input.autofocus
,如下所示:

 //the modernizr conditional load function
 Modernizr.load({
     //specify the tests, refer to the Modernizr docs for object names
   test: Modernizr.input.required && Modernizr.input.placeholder,
     //specify what to do if the browser fails the test, can be a function
   nope: 'path/to/polyfill/script',
     //sometimes you need to run some JS to init that script
   complete: function(){ polyfillinitorwhatever(); }
 });
这就是一个相当精简的现代化系统。虽然我发现他们的文档很费劲,但它们实际上非常好。每次我遇到问题,在Paul Irish发推特时,他都会发回一个指向文档的链接,在那里我确实在仔细检查后找到了我的答案


验证是HTML5中最复杂的特性之一,浏览器制造商需要将其作为标准来实现。虽然我非常喜欢它的简单性,但我一直在继续在所有情况下使用jQuery.validate,除非用户使用Chrome或Opera,FF原生验证仍然很弱。我建议您现在继续使用jQuery。

我最近发现了一个新插件


使用此功能,表单验证(如Opera中的表单验证)将在所有浏览器中启用,即使是IE8。

请检查哪些浏览器将在表单输入上使用HTML5属性进行验证,并且与IE7、IE8及更高版本兼容。对于我来说,它也适用于IE6。@apaidnerd链接不适用working@Patriks林克不工作了,你好,非常感谢您的反馈…我将尝试上面的一些解决方案。嗯……但我已经在使用/引用Modernizer了,从我的想法来看,它应该可以解决所有这些跨浏览器问题,使原生HTML5在各种浏览器中都能透明地工作,所以这是一个愚蠢的问题:为什么Modernizer不能在IE8中工作?如果在IE中不起作用,那么“现代化”有什么好处?或者我只是没有正确使用Modernizer?我的页面引用了Modernizer…这就是本文的重点。我不明白为什么Modernizer似乎不起作用……Modernizer不会起作用,它只是检查浏览器有哪些功能。你需要一个polyfill,看看我的答案。如果你去,你可以下载包含polyfill的modernizer。还有一个,我们只需要包含JavaScript文件,就是这样。在IE6上也可以,但形式只给出redbox,没有指定messageHi,我只是想在形式上否决投票。我很好地使用了它,但实际上它在IE11的IE8模拟中没有出错,但在真正的IE8中出现了错误,然后所有的操作都是redbox,它甚至没有正确地验证。我使用的是max、min、step验证,它在所有浏览器中都运行良好,包括IE仿真,因为我已经有了一些IE8 polyfill,并且使用了旧的JS,通过jQuery验证和非结构化验证,一切都很好。然而,礼节把事情弄糟了,只告诉了我一个红色的盒子,没有错误信息,也不知道它为什么这么做。移除,np