2010-04-05 67 views
1

我有兩個領域需要相互相乘並填寫第三個表單的值。這裏的HTML:如何讓JavaScript設置這些元素值?

<input type="text" name="estimate[concrete][price]" value="" onBlur="calc_concreteprice(document.forms.mainform);" /> 
per SF <strong>times</strong> 
<input type="text" name="estimate[concrete][sqft]" value="" onBlur="calc_concreteprice(document.forms.mainform);" /> SF 
= <input type="text" name="estimate[concrete][quick_total]" value="" /> 

這裏是我的JavaScript:

function calc_concreteprice(mainform) { 
     var oprice; 
     var ototal; 

     oprice = ((mainform.estimate[concrete][sqft].value) * (mainform.estimate[concrete][price].value)); 
     ototal = (oprice); 

     mainform.estimate[concrete][quick_total].value = ototal; 
    } 

我想前兩種形式一起被輸出乘以第三。我認爲我的問題可能在於我如何引用輸入字段名稱,括號(我將這個表單的結果作爲一個數組,因此我已經習慣將結果作爲一個多維數組使用)。

回答

3

當您編寫諸如mainform.estimate[concrete][quick_total].value之類的東西時,它會嘗試訪問名爲concretequick_total的屬性。嘗試使用這種格式,而不是一個屬性,含有方括號的字符串來區分:

mainform['estimate[concrete][quick_total]'].value

+0

我很欣賞這種做法,引用這樣的引用是一個很好的決定,但它不起作用。 – dmanexe 2010-04-05 23:10:31

+1

當你嘗試時會發生什麼?你得到一個錯誤或任何東西?我只是試了一下,它適用於我。 – 2010-04-05 23:33:02

+0

也適用於我。你使用螢火蟲進行調試嗎?如果沒有,你應該檢查出來。 – gregh 2010-04-06 02:50:58

0

我很確定這是方括號。嘗試在輸入字段上更改您的姓名。如果要在名稱之間明確區分以顯示某種層次結構,請嘗試使用下劃線<input type="text" name="estimate_concrete_price" />

在你的JavaScript將其更改爲mainform.estimate_concrete_price.value .....

把那一個鏡頭。我很確定它會起作用。

+0

這樣做是可以的,但我不能改變的輸入名稱。它必須與括號保持一致[具體]。 – dmanexe 2010-04-05 23:03:32