2011-03-01 210 views
1

我正在使用Struts2應用程序。我正在設置JSP中隱藏字段的值,以便通過JavaScript訪問它。獲取隱藏字段值

我的JSP代碼:

<s:iterator value="collegelist"> 
    <tr> 
     <td align="center"><s:property value="collegename"/></td> 
     <s:hidden name="hiddenname" key="collegename" /> 
    </tr> 
</s:iterator> 

我的JS代碼:

var myForm = document.frmAction; 
var text = myForm.hiddenname.value; 
alert("hidden field text is:" + text); 

警報顯示爲空值。

原因是什麼?如何解決?

+0

您是否正確拼寫'document.frmAction'? – Jeremy 2011-03-01 13:29:56

+0

它是正確的:var myForm = document.frmAction; – singh 2011-03-01 13:34:48

+0

@singh:alert(myForm);它顯示爲空嗎? – 2011-03-01 13:36:06

回答

0

由於代碼位於s:iterator標記內,因此可以生成具有相同名稱的多個字段。很顯然你應該有這樣的循環在你的JavaScript以及:

var hiddenFields = document.getElementsByName("hiddenname"); 
for (var i = 0; i < hiddenFields.length; i++) { 
    alert("hidden field text is::" + hiddenFields[i].value); 
} 

另外,檢查值不是在生成的HTML空白,而且隱藏的fields'a名字是hiddenname。

+0

有些東西是錯的也在這裏: '/> 它顯示在警報它不打印值 – singh 2011-03-01 14:08:21

+0

您不能將標籤作爲另一個標籤的屬性。試試 2011-03-01 14:40:04

+0

大學名稱將在運行時生成。請建議 – singh 2011-03-02 06:14:45

0

我想你的代碼,它肯定工程..問題是在某處你的服務器代碼本身..

看吧:http://jsbin.com/ajajo4/2/edit

+0

嗨Shekhar謝謝你的迴應。問題也存在 標籤在隱藏字段中發送值。但它不起作用。 請審查。 – singh 2011-03-02 06:27:11

3

嘗試

element = document.getElementsByName("hiddenname"); 
alert(element[0].value); 
0

確保你只有一個名稱爲「frmAction」的形式,只有一個名稱爲「hiddenname」的隱藏字段。如果你有多個,你會得到一個數組,而不是一個單一的值。

0

問題的根源在於你在迭代器內部。 Struts會爲您更新名稱,以便正確掛接所有內容。如果你把你的頁面,查看源代碼,你的隱藏字段可能會是這個樣子:

<input type="hidden" name="collegelist[0].hiddenname" value="thename"/> 

無論如何,如果你想通過名字來工作的檢索,不信任你提供一個支柱名稱標籤。始終拉起生成的來源並查看該字段實際具有的名稱。

+0

如何在迭代中使用Struts2標籤分配隱藏值。我的JSP代碼如下所示:'/>它將隱藏域值它顯示在警報上的字符串:Java腳本代碼:var text = myForm.hiddenname.value;警報(文本);請建議 – singh 2011-03-02 07:50:01