2012-03-01 91 views
1

我已經在網上搜索,但找不到任何解決方案。 當我點擊'samplepage.php'上的'提交'按鈕時,我將頁面重定向到'newpage.php'頁面。當用戶點擊瀏覽器的後退按鈕時,我想重置'samplepage.php'表單值。現在它保留了所有的文本框值,單選按鈕和複選框選擇。如果有任何建議,請讓我知道嗎?謝謝你的幫助。重置後退按鈕上的表格

這是我的重定向php代碼。

header ("location:newpage.php); 
+0

你在做什麼網頁瀏覽器測試? – user17753 2012-03-01 21:30:42

+0

你可以在'onload'事件中使用窗體的'reset()'方法... – Yaniro 2012-03-01 21:31:43

+0

我必須支持所有的瀏覽器。 – nav100 2012-03-01 21:35:01

回答

0

您無法使用服務器端代碼觀看瀏覽器的後退按鈕。

需要Javascript和jQuery用在如「popstate」一知半解和「pushState的」舞臺

+1

jQuery對此沒有必要。 :/ – Snuffleupagus 2012-03-01 21:37:25

+0

它不是'必需的',但是OP對客戶端代碼有明顯的理解,您不會推薦一個庫,也可能是一個polyfill? – Relic 2012-03-01 21:40:16

+0

也許,與其向人們提供一個4線解決方案的90k庫,我們應該考慮人們有思想能力;如果他們在這裏想要傳遞代碼而沒有理解它是如何工作的,那麼他們在錯誤的地方開始。 – Snuffleupagus 2012-03-01 21:47:15

-1

清除在頁面加載的值。

<input type="text" id="ClearIt" value=""/> 

將此放在口主體標籤:

onload="document.getElementById('ClearIt').value=''" 
0

這事關係到瀏覽器。

您可以清空輸入在最後時刻(提交前),並把值一些隱藏的領域...

0

你必須清除它在頁面加載如果你真的想這樣做。如果您有多個控件,則需要在表單中循環以清除它。假設他們所有項目...

var elems = document.getElementsByTagName("input") 
for (var i=0;i<elems.length;i++) 
{ 
    elems[i].value = ''; 
} 

它讓所有的輸入控件,遍歷所有這些,將它們的值空白。 您可以通過設置.checked取決於它們的類型來擴展它以用於單選按鈕/複選框。

只是我的兩分錢問題,雖然,這是一個壞主意,清除表單。瀏覽器保留它所做的狀態是有原因的。

例如,如果服務器端的驗證失敗,我不得不返回並重新輸入所有內容,我不會很高興。 :(

0

你忘死()

header ("location:newpage.php"); 
die(); 

您也可以嘗試重置$ _ POST,$ _ GET和$ _SESSION瓦爾

unset($_POST,$_SESSION, $_GET); 
header ("location:newpage.php); 
die(); 

更新:剛剛看了你想在歷史背景上取消設置 ,我沒有意識到在我的 上面的代碼中...

您將不得不ww請使用一些標記代碼來清除與輸入字段相關的 變量並選擇表格的列表 。

無論如何。JS

function clearForm(formIdent) 
{ 
    var form, elements, i, elm; 
    form = document.getElementById 
    ? document.getElementById(formIdent) 
    : document.forms[formIdent]; 

    if (document.getElementsByTagName) 
    { 
     elements = form.getElementsByTagName('input'); 
     for(i=0, elm; elm=elements.item(i++);) 
     { 
      if (elm.getAttribute('type') == "text") 
      { 
       elm.value = ''; 
      } 
     } 
     elements = form.getElementsByTagName('select'); 
     for(i=0, elm; elm=elements.item(i++);) 
     { 
      elm.options.selectedIndex=0; 
     } 
    } 

    // Actually looking through more elements here 
    // but the result is the same. 
    else 
    { 
     elements = form.elements; 
     for(i=0, elm; elm=elements[i++];) 
     { 
      if (elm.type == "text") 
      { 
       elm.value =''; 
      } 
     } 
    } 
} 

function addEvent(elm, strEvent, fnHandler) 
{ 
    return (elm.addEventListener 
    ? elm.addEventListener(strEvent, fnHandler, false) 
    : elm.attachEvent('on'+strEvent, fnHandler) 
    ); 
} 

在表單股利

<script type="text/javascript"> 
    // <![CDATA[ 
    var el = document.createElement("input"); 
    el.setAttribute("id", "clearButton"); 
    el.setAttribute("type", "button"); 
    el.setAttribute("value", "Clear"); 
    document.getElementById("FormDiv").appendChild(el); 
    addEvent(el, 'click', function(){ clearForm('form_name');}); 
    // ]]> 
</script> 
0

另外,您也可以使用HTML事件「onunload的」做同樣的事情海報建議之前。從你的角度來看,在你開火的時候可能並不重要。