大多数浏览器缓存形成输入值.因此,当用户刷新页面时,输入具有相同的值.
这是我的问题.当用户单击"保存"时,服务器将验证POSTed数据(例如,已检查的产品),如果无效,则将其发送回浏览器.但是,如上所述,即使服务器清除某些值的选择,由于浏览器缓存,它们仍可能被选中!我的数据不可见(直到选中父项)复选框,因此用户可能甚至不知道仍然选择了某些先前的值,直到再次单击"保存"并收到错误消息 - 即使用户认为不是.哪个很烦人.
这可以通过Ctrl-F5解决,但它甚至不是解决方案.是否有一种自动/编程方式告诉浏览器不要在某个表单/页面上缓存表单输入数据?
我发现了我认为是Firefox的一个错误,我想知道这是否真的是一个错误,以及任何解决方法.
如果您使用以下来源创建基本网页:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
</head>
<body>
<div>
<input id="txtTest" type="text" />
<input type="button" onclick="$('#txtTest').attr('disabled','disabled');" value="Set Disabled (jQuery)" />
<input type="button" onclick="document.getElementById('txtTest').disabled = true;" value="Set Disabled (js)" />
<input type="button" onclick="$('#txtTest').removeAttr('disabled');" value="Remove Disabled" />
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果您disable的textbox动态再刷新页面,则textbox仍然会被禁用,而不是重新回到原来的状态没有被禁用.我在IE8和Chrome中尝试过这种方法,并且这些操作与我期望的一样,textbox当我刷新时将其重置为未禁用.
另一个有趣的信息是,如果输入是a checkbox而不是a ,它仍然会做同样的事情textbox.
我在Firefox中的功能存在很大问题,它保留了用户在重新加载时填写的数据F5.如果我使用Ctrl+ F5表格被清除,这很好.我的问题是并非所有用户都知道这是强制输入清理所必须做的.是否有一种方法在html或响应头中告诉Firefox不保留表单中的数据?
我发现了一个奇怪的问题.在Firefox中打开一个简单的页面,代码很简单如下:
<html>
<body>
<textarea></textarea>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在Firefox中,我在textarea中键入了一些字符.然后我单击浏览器的刷新按钮.令人惊讶的是,在页面刷新后,我输入的内容仍然存在于textarea中.但是,如果我只关注URL栏并按ENTER键,刷新后textarea就会清除.
我在Linux的Firefox 3.6.12和MacOS的3.6.3中重现了这一点.并且,我只安装了Firebug扩展,因此它不应该归功于Firefox扩展.
这是一个知道问题吗?单击"刷新"按钮后如何清除textarea?
我的表单中有一个隐藏的输入字段.我注意到如果javascript更改了该字段的值,然后用户刷新页面,则在页面重新加载时将设置相同的值.从我所看到的,这只发生在Firefox中.
我通过添加autocomplete="off"隐藏的输入解决了这个不需要的行为,但W3C不喜欢这个解决方案,如果我验证页面,我得到错误:
Attribute autocomplete not allowed on element input at this point.
Run Code Online (Sandbox Code Playgroud)
显然,该autocomplete属性仅适用于特定输入 - 请参见此处.
那么有什么解决方案可以满足W3C和Firefox的需求吗?
我正在渲染一个包含当前所选值的下拉框selected="true".
<select id="dropDown">
<option selected="true" value="1">value2</option>
<option value="2">value3</option>
<option value="3">value4</option>
</select>
Run Code Online (Sandbox Code Playgroud)
最初所选的值对应于selected="true",但如果我使用下拉框然后刷新页面,selected="true"则忽略该值,显示的值是我选择的最后一个.我尝试使用selected="selected"相同的结果.谢谢你的帮助.
首先,我知道这个问题类似于:Firefox缓存textarea值?但我的略有不同(我认为,我对HTML非常缺乏经验).
所以我有一个
<div class='class'><div id='message'><textarea id="msg">msg</textarea></div></div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试禁用缓存,这样当我刷新时,它会从服务器而不是浏览器中获取textarea.但我只想尝试这个textarea.不幸的是,textarea的内容是由代码生成的,而不是硬编码的.我可以在其中一个div中粘贴"autocomplete = off"属性并将其过滤到textarea吗?或者我必须找出为textarea生成代码的位置并修改它?
[编辑](来自comment-has-an-answer)因为我无法控制标记字段,所以我必须编写一个与特定textarea ID匹配的jquery.也许下次人们会真正阅读这个问题......
html ×5
firefox ×3
browser ×2
forms ×2
input ×2
autocomplete ×1
caching ×1
css ×1
hidden-field ×1
html5 ×1
javascript ×1
textarea ×1
textbox ×1