我正在尝试清理我的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来说没问题 - 但也许它还处于_2480769阶段? http://www.w3.org/Submission/web-forms2/#autocomplete
思考?
5 回答
Web表单规范与HTML 4 / XHTML无关 . 遗憾的是,
autocomplete
不会通过验证 .我认为实现关闭自动完成的有效HTML 4 / XHTML的唯一方法是使用JavaScript在页面加载时添加属性 . 很糟糕,我知道 - 但我认为这是唯一的方法 .
autocomplete是HTML5 attribute,因此如果需要,请使用HTML5文档类型声明 .
W3C链接用于Web表单,而不是核心XHTML . 可以为Web表单提供额外的DTD并使页面进行验证 .
如果您需要自动填充(浏览器支持),请尝试扩展您的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> ]>
我刚刚反对浏览器和标准之间的这种恼人的冲突 . 我最终通过在页面上运行javascript, not 等待
window.onLoad
或$(document).ready()
,将属性添加到类no-browser-autocomplete
的所有元素 . 然后我通过我的应用程序删除autocomplete="off"
并添加此类而不是 .显然,在没有运行javascript的浏览器环境中,这将失败 .
我在页面上而不是在dom ready块中执行此操作的原因是,如果您等待dom准备就绪,浏览器已经自动完成了它,至少在Firefox中(我正在测试它) .
所以,这是我在我的应用布局中包含的一个javascript文件的开头: