获得隐藏的字段值

时间:2011-03-01 13:27:28

标签: java javascript html jsp struts2

我正在开发一个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);

警报显示空白值。

原因是什么?如何解决?

5 个答案:

答案 0 :(得分:3)

尝试

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

答案 1 :(得分:0)

我尝试了你的代码,它确实有效..问题出在服务器代码本身的某个地方..

请看这里:http://jsbin.com/ajajo4/2/edit

答案 2 :(得分:0)

确保您只有一个名称为“frmAction”的表单,并且只有一个名为“hiddenname”的隐藏字段。如果你有多个,你将获得一个数组而不是一个值。

答案 3 :(得分: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中的值是否为空,并且隐藏字段的名称是hiddenname。

答案 4 :(得分:0)

问题的根源在于你是一个迭代器。 Struts为您更新名称,以便正确地连接所有内容。如果您拉起页面并查看源代码,您的隐藏字段可能如下所示:

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

无论如何,如果您希望按名称检索工作,请不要相信您提供给struts标记的名称。始终拉起生成的源并查看该字段实际具有的名称。