表單緩存是指當用戶在表單輸入之后再次回到該表單或者刷新頁面的時候,瀏覽器會直接顯示用戶之前的輸入,即表單緩存下來了。多數情況下這正是我們想要的,但也有些情況我們希望表單能夠刷新,特別是根據后台的數據刷新。例如:單選框 radio屬性,當我們點擊之后,刷新一下頁面,剛才點擊的選項並沒有清除,而是緩存了下來。原因:表單緩存造成的。
解決辦法:
1. 清除頁面緩存。HTML header中加入:
<meta http-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control" content="no-cache">
<meta http-equiv="expires"content="0">
或者
是手動刪除緩存,或者是修改瀏覽器的設置。
弊端是部分瀏覽器caching不能用了,瀏覽速度會降低。
2.比較好的方法:在form中加入autocomplete='off'屬性,或者在input中加入autocomplete='off'屬性,
好處:滿足大部分瀏覽器 ,不產生表單緩存
3.在頁面退出的時候刷新一下表單的內容,比如:
<script type="text/javascript"charset="utf-8">
$(window).unload(function() {
$('select').each(function(){
var othis = $(this);
var oselect =othis.closest('select');
oselect.prepend(othis);
});
});
</script>
4. 在windows環境下的IE更麻煩些,刷新表單內容是沒有用的,我試過改變value和改變屬性,都不行。唯一的方法是刪除表單內容,但這樣會使頁面變得奇怪,后來想到可以先復制表單內容,然后再刪除原有的內容。
$(window).bind('beforeunload', function(e){
$('select').each(function(){
var othis = $(this);
othis.clone().insertbefore(othis);
othis.remove();
});
注意:瀏覽器需要enable cache才能看到3,4的效果
----------------------------------------------------------------------------------
原文:https://blog.csdn.net/g893465244/article/details/43967647