我的表单中有一个隐藏的输入字段。我注意到如果javascript更改了该字段的值,然后用户刷新页面,则在页面重新加载时将设置相同的值。从我所看到的情况来看,这只发生在 Firefox 。
中我已通过向隐藏的输入添加autocomplete="off"
来解决了这种不受欢迎的行为,但 W3C 不喜欢此解决方案,如果我验证了该页面,则会收到错误消息:< / p>
Attribute autocomplete not allowed on element input at this point.
显然,autocomplete
属性仅适用于特定输入 - see here.
那么是否有任何解决方案可以满足 W3C 和 Firefox ?
答案 0 :(得分:12)
要验证(我不会投入尽可能多的努力)我认为您可以在整个表单上使用autocomplete="off"
,然后有选择地将其重新打开,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>TEST</title>
</head>
<body>
<form autocomplete="off">
<input type="hidden" name="test">
<input type="text" name="otherfield" autocomplete="on">
</form>
</body>
</html>
我最初认为这是一个Firefox错误,但在评论中与 robertc 讨论后,我认为预期的行为取决于具体的用例。规范不允许在隐藏字段上自动完成,所以我的第一反应仍然是正确的,但Firefox的实现可能有一些很好的论据来支持它。请评论。
答案 1 :(得分:3)
或者,您可以使用<input type="text" style="display: none;" autocomplete="off" />
代替。这有点像黑客,但它应该有效!
Firefox中的缓存在很多时候实际上是一个很好的功能,但是当你构建更多动态表单时它确实会引起一些问题。