2014-01-24 50 views
0

我有以下問題:運行的JavaScript回

我已經創建了這樣的幾個輸入字段的一種形式:

<td>Pizza Margherita</td> 
<td><input type="number" id="countMargherita" class="formnumbers" name="PizzaMargherita" onChange="validateForm(this);changeTotalFromCount(this);" data-unitprice="7"/></td> 
<td><span id="totalMargherita"></span></td> 

11要準確。

onChange="changeTotalFromCount(this)"如下所示:

function changeTotalFromCount(input) { 
     var unitPrice = parseFloat(input.getAttribute("data-unitPrice")); 
     var count = input.value; 

     var price = unitPrice * count; 
     var formattedPrice = '\u20ac ' + price.toFixed(2); 

     var label = input.parentNode.nextElementSibling; 
     label.innerHTML = ''; 
     label.appendChild(document.createTextNode(formattedPrice)); 
    } 

現在這樣做是說用戶想要5分瑪格麗特比薩的他在輸入字段中輸入5,然後immdediately表示在這種情況下爲7的成本* 5 = 35.這工作得很好,但是當用戶提交表單時,他會將其帶到另一個.php文件中,他會在其中看到所有細節的確認。還有一個按鈕需要再次將它們帶回訂單頁面。我第一次做這樣的只是把它直接發送到我的orderform.php但是這並不能爲用戶節省了輸入我決定使用它代替:

<input type='button' value='Bestelling Wijzigen' onClick="history.go(-1);return false;" class='printbutton'> 

我不知道這是否是正確的事做或不做,但是當他回去時,我保存了用戶的信息。除非他/她再次更改輸入,否則不會再顯示輸入旁邊的價格。這就是我的問題,我喜歡它,所以如果用戶回去改變他的訂單,他仍然可以看到每個產品的成本,而不必在再次看到它之前進行更改。

我不是真正的JS或PHP專家。 (如果您錯過任何信息,請讓我知道!)

+1

您將需要存儲的購物車無論是在使用類似的localStorage或使用例如會話服務器上的客戶端。然後,您可以在每次打開時正確構建表單。 – jeroen

+0

你也可以看看使用historyjs(https://github.com/browserstate/history.js)。你仍然需要存儲狀態。 – Jason

+0

您可以輕鬆地將值存儲在cookie中,然後在訂單頁面上檢索cookie。 – SyntaxLAMP

回答

0

您可以使用onload事件來運行初始化所有總計的代碼。當您使用後退按鈕訪問網頁時以及以任何其他方式訪問網頁時都會觸發它。

因此,例如

function initTotals() 
{ 
    var inputs = document.getElementsByTagName('input'); 
    for(var i=0; i < inputs.length; i++) 
    { 
     changeTotalFromCount(inputs[i]); 
    } 
} 

window.onload = initTotals; 

http://jsfiddle.net/XK99Z/

+0

對不起,對於遲到的反應,但這似乎並沒有爲我工作,我甚至從字面上複製你的代碼片段,但它仍然無法正常工作。儘管它在你的jsfiddle中工作得很完美 –

+0

你可能使用'window.onload'來做其他事情嗎?因爲它可能被覆蓋。我沒有看到任何其他明顯的問題,它可能會干擾其他代碼,除非引發錯誤。 – towr

+0

等待沒有想到問題出現在我的頁面的第二個表格中,有什麼可能導致這種情況?由於表格沒有做任何事情...... –