我正在尝试清理我的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
思想?
答案 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
});