2014-12-02 85 views
0

我試圖做一些非常基本的事情,但它證明比我預期的更難。長話短說,我使用ajax來加載產品頁面之間的內容。在偶然的情況下,用戶可能刷新頁面(加載原件),然後在產品部分下方重新填充購物車部分。jquery - 無法保留<selected>&<input>頁面刷新後的最新值

我在頁面之間傳遞他們的購物車項目(和重新加載)作爲寫入本地存儲的值的表格,然後從那裏檢索。所有這些工作正常,除了...:

問題:'input'和'selected'元素沒有保持它們的選定值,而是恢復爲默認選擇。我已經將它隔離到瀏覽器行爲上,因爲FireFox實際上會保持重新加載選定的值(除非您重複加載)。 Chrome瀏覽器和IE瀏覽器只會在重新加載時重置爲默認值(就像無論是來自源HTML的「輸入」的寫入select =「selected」或值)。

如何在'輸入'&'selected'元素即時屬性重寫值的變化瞬間?像這樣的例子:

  <select name="Size" class="os0" onchange="calculateTotal()"> 
      <option value="20" selected="selected">20cm sq</option> 
      <option value="30">30cm sq</option> 
      <option value="45">45cm sq</option> 
      <option value="60">60cm sq</option> 
      </select> 

現在,當用戶在報價表更新大小,說60釐米平方米,應該刪除選定=「選擇」屬性,實際上它改寫爲期權價值=「60」 - 它必須是對html本身的重寫,否則它不會刷新。

我希望這是明確的,可以闡述更多,如果任何人需要更多的信息。

回答

1

有幾種方法,你可以做到這一點

  1. 使用$_COOKIE,以節省客戶端的臨時數據,然後每次頁面刷新或重新加載檢索這個cookie。這一方面是客戶端,數據可能會被用戶篡改/刪除,從而導致同樣的問題。檢出曲奇here
  2. 使用localStorage這與Cookie類似,因爲它也位於客戶端。退房localStorage here
  3. 使用$_SESSION它比localStorage和cookie更安全,因爲它是服務器端,不能被篡改。但是,如果同時存在多個點擊到您的網站,再次保存太多數據到會話可能會導致問題。

對於localStorage您可以使用jquery或javascript輕鬆檢查選擇。對於輸入字段選擇這樣做

if(localStorage.getItem("itemname") !== null) { 
// denotes the value exists 
$('inputName').val('localStorage item') 
} 

同理:

+0

感謝您的信息,我知道這三種方法,並選擇了localStorage的其易於實現。我只需要知道當用戶更改現有選項/值時,如何強制「選擇」和「輸入」元素更新它們的選擇=「選定」和值。很顯然,瀏覽器默認不會這樣做,因爲刷新任何這樣的元素都會回到原來的默認選擇/值。 – Matthew6 2014-12-02 04:29:21

+0

這段代碼至少給我指出了一個新的方向,我明白了!謝謝! – Matthew6 2014-12-02 08:08:02