1. Member Account Number<span class="bodyCopy"><font color="#ff0000"> * </font></span>:
<html:select name="reDataForm" property="member.accountNumber" styleClass="formContent"
style="width:80px" onchange="showfield(this.options[this.selectedIndex].value)">
<html:options collection="<%= WorkConstants.Dropdowns.PACCT %>" property="value"
labelProperty="label" styleClass="formContent"/>
</html:select>
<div id="div1"></div>
功能如下:
<script type="text/javascript">
function showfield(name){
if(name=='Other')
document.getElementById('div1').innerHTML='<html:text name="reDataForm" property="member.accountNumber" styleClass="formContent" maxlength="9" size="9"/>';
else
document.getElementById('div1').innerHTML='';
}
</script>
问题是:如果我选择选项“其他”,则下面的文本将按设计出现。但是没有设置值member.accountNumber。我可以看到帐号为“其他”。而不是我在文本框中输入的值。为什么呢?以及如何设置呢?
最佳答案
您对客户端和服务器端代码感到困惑。 Struts标记<html:text>
在服务器端呈现。在您的情况下,您正在尝试将该自定义标签放在客户端(JavaScript)上。 JavaScript基本上会显示HTML行,并且您的浏览器无法解释<html:text>
是什么,因为这是服务器端的自定义标签。
更新
您需要做的是将文本放置为隐藏字段,以便Struts可以呈现自定义标签和bean值:
<html:hidden styleId="accountNumber" name="reDataForm" property="member.accountNumber"/>
然后,在Javascript中,您要从隐藏字段中获取值并将其设置为
div1
:-<script type="text/javascript">
function showfield(name){
if(name=='Other')
document.getElementById('div1').innerHTML= document.getElementById('accountNumber').value;
else
document.getElementById('div1').innerHTML='';
}
</script>