2011-10-09 150 views
0

我有一個包含多個表單的頁面,但是所有表單都需要獲取產品表單中單選按鈕的值。以下是我的表單的簡化版本,它們都在同一頁面上。將一個表單的值複製到第二個表單的隱藏字段

<form name="products" method="post" action="" /> 
<input id="prod_name" name="prod_name" type="radio" value="Product 1" checked /> 
<input id="prod_name" name="prod_name" type="radio" value="Product 2" /> 
</form> 

<form name="delivery_method1" method="post" action="" /> 
<input type="hidden" id="item_name" name="item_name" value=""/> 
<input type="image" name="submit" value="submit"> 
</form> 

<form name="delivery_method2" method="post" action="" /> 
<input type="hidden" id="item_name" name="item_name" value=""/> 
<input type="image" name="submit" value="submit"> 
</form> 

我明白我應該能夠「PROD_NAME」的值複製到的隱藏字段「ITEM_NAME」使用JavaScript,但是我已經嘗試了一些解決方案,但他們都沒有奏效。

我很少的JavaScript知識,我將不勝感激,如果有人能夠給我提供一個全功能和功能如何從表單中付諸行動的細節。

回答

2

ID屬性應該是獨特。如果你不需要它們,請刪除它們。如果您使用id=...爲造型的目的,通過class=取代id=所有出現,並用一個點替換銳(#)在CSS。

當一個提交表單時,只能用name屬性的元素被髮送。
這應該工作:

.... 
<script> 
function fill(value) { 
    var forms = document.forms; 
    for (var i = 0; i < forms.length; i++) { 
     if (forms[i].item_name) forms[i].item_name.value = value; 
    } 
} 
</script> 
</head> 
<body> 
... 
<form name="products" method="post" action=""> 
<input onchange="fill(this.value)" name="prod_name" type="radio" value="Product 1" checked /> 
<input onchange="fill(this.value)" name="prod_name" type="radio" value="Product 2" /> 
</form> 
... 

所有的表單元素是通過在form元素他們的名字訪問。通過document.forms對象可訪問所有表單(通過名稱或文檔中的索引)。

當無線電選擇的變化,函數fill()被調用,通過this.value作爲參數。從無線電輸入元素的上下文中,this.value指向無線電元素的值。

然後,我們遍歷文檔中的所有表單。如果item_name是表單中的一個元素,則值會更新。

+0

感謝羅布,這讓我更接近了很多比我一直但是它傳遞值「未定義」 - 任何想法? – scottk

+0

我已經更新了我的答案。我沒有試圖通過函數檢索名稱,而是將它作爲HTML源代碼中的一個參數傳遞。 –

+0

我真的不能夠感謝你Rob,很好的回答,還有一個我可以從中學到些東西......祝你有個美好的一天。 – scottk

相關問題