autocomplete属性没有通过XHTML 1.0 Transitional验证,为什么?

时间:2010-03-25 14:35:30

标签: html html5 xhtml

我正在尝试清理我的xhtml验证 - 我正在通过W3C验证器运行我的页面。出于某些令人费解的原因,它没有使用autocomplete =“off”属性传递输入字段:

<input name="kwsearch" id="sli_search_1" type="text" autocomplete="off" onfocus="if(this.defaultValue==this.value) this.value='';"
            onblur="if(this.value=='')this.value=this.defaultValue;" class="searchbox" value="Search" />

我正在使用此doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

这是验证错误:

第410行,第81栏:没有属性“自动完成”

... li_search_1“type =”text“autocomplete =”off“onfocus =”if(this.defaultValue == thi ...

我认为这对W3C来说没问题 - 但是,也许它还处于“提交”阶段? http://www.w3.org/Submission/web-forms2/#autocomplete

思想?

5 个答案:

答案 0 :(得分:5)

自动填充是HTML5 attribute,因此如果需要,请使用HTML5文档类型声明。

答案 1 :(得分:5)

Web表单规范与HTML 4 / XHTML无关。遗憾的是,autocomplete不会通过验证。

我认为实现自动完成的有效HTML 4 / XHTML的唯一方法是使用JavaScript在页面加载时添加属性。很糟糕,我知道 - 但我认为这是唯一的方法。

答案 2 :(得分:1)

W3C链接用于Web表单,而不是核心XHTML。可以为Web表单提供额外的DTD并使页面进行验证。

答案 3 :(得分:0)

如果您需要自动填充功能(浏览器支持自动填充功能),请尝试扩展您的doctype,如下面的XHTML 1.1所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [ <!ATTLIST form autocomplete (on|off) #IMPLIED> ]>

答案 4 :(得分:0)

我刚刚反对浏览器和标准之间的这种恼人的冲突。我最后通过在页面上运行javascript,等待window.onLoad$(document).ready()来解决这个问题,将属性添加到类no-browser-autocomplete的所有元素中。然后我通过我的应用删除了autocomplete="off"并添加了这个类。

显然,在没有运行javascript的浏览器环境中,这将失败。

我在页面上而不是在dom ready块中执行此操作的原因是,如果您等待dom准备好,浏览器已经自动完成了它,至少在Firefox中(我正在测试它)。

所以,这是我在我的应用布局中包含的一个javascript文件的开头:

//this needs to run BEFORE all of the loaded/ready events fire, that's why it's not in the dom.ready function
$(".no-browser-autocomplete").attr("autocomplete", "off");

$(function(){ 
  //dom ready
});