我创建了一些操作来预先填充我可以为不同的jsp页面重用的列表。我需要能够使用javascript显示/隐藏这些列表。我使用了以下代码,但它无效。
我正在使用struts2和spring
的javascript
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("hihDiv").style.display = '';
JSP
<tr id="hihDiv" style="display: none">
<td class="leftAligned"><s:action name="HIHRef" executeResult="true" /></td>
</tr>
行动jsp
<s:select id="reviewContractor" size="5" name="reviewContractor" size="1" list="reviewContractors"
label="Review Contractor" onchange="showReviewContractor(this.value)"/>
<s:select size="5" size="1" id="hih" list="hihs" name="hih" label="HIH" />
列表预填充正常但是当我更改reviewContractor的选择时,它应该显示/隐藏hihDiv行并且它不起作用。由于<s:action>
标记,我不确定它是否无法正常工作。当我使用带有jsp页面中的选项的select时javascript工作但我无法预先填充数据库中的列表。现在使用s:action
标记,我可以预先填充列表,但显示/隐藏不起作用。
有什么建议吗?
这是我的javascript。有几个选项需要显示/隐藏,但我想先让它们工作。
function showReviewContractor(val){
var value = parseInt(val);
alert(value);
switch(value){
case 0:
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("claimDiv").style.display = '';
document.getElementById("racDiv").style.display = '';
document.getElementById("macDiv").style.display = '';
document.getElementById("certDiv").style.display = '';
document.getElementById("permDiv").style.display = '';
alert("all");
break;
case 1: //rac
document.getElementById("claimDiv").style.display = '';
document.getElementById("racDiv").style.display = '';
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("macDiv").style.display = 'none';
document.getElementById("certDiv").style.display = 'none';
document.getElementById("permDiv").style.display = 'none';
alert("rac");
break;
case 2: //mac
document.getElementById("claimDiv").style.display = '';
document.getElementById("macDiv").style.display = '';
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("racDiv").style.display = 'none';
document.getElementById("certDiv").style.display = 'none';
document.getElementById("permDiv").style.display = 'none';
alert("mac");
break;
case 3: //cert
document.getElementById("claimDiv").style.display = '';
document.getElementById("certDiv").style.display = '';
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("racDiv").style.display = 'none';
document.getElementById("macDiv").style.display = 'none';
document.getElementById("permDiv").style.display = 'none';
break;
case 4: //perm
document.getElementById("claimDiv").style.display = '';
document.getElementById("permDiv").style.display = '';
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("racDiv").style.display = 'none';
document.getElementById("macDiv").style.display = 'none';
document.getElementById("certDiv").style.display = 'none';
break;
/*case 5:
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("claimDiv").style.display = '';
document.getElementById("racDiv").style.display = 'none';
document.getElementById("macDiv").style.display = 'none';
document.getElementById("certDiv").style.display = 'none';
document.getElementById("permDiv").style.display = 'none';
break;
case 6:
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("claimDiv").style.display = 'none';
document.getElementById("racDiv").style.display = 'none';
document.getElementById("macDiv").style.display = 'none';
document.getElementById("certDiv").style.display = 'none';
document.getElementById("permDiv").style.display = 'none';
break;
case 7:
document.getElementById("hihDiv").style.display = 'none';
document.getElementById("claimDiv").style.display = 'none';
document.getElementById("racDiv").style.display = 'none';
document.getElementById("macDiv").style.display = 'none';
document.getElementById("certDiv").style.display = 'none';
document.getElementById("permDiv").style.display = 'none';
break;
*/
default:
break;
}
}
答案 0 :(得分:2)
除非您明确将主题设置为“简单”,否则<s:select>
标记将呈现自己的表行/单元格,从而创建无效的HTML。 (我必须检查S2表单标签是否必须显式嵌套在表单标签中,如S1中所示,我认为它可以正常工作,因为你没有创建伪造的HTML)。
<s:select (all your stuff, but add) theme="simple" />
我真的建议不要这样做 - 而是在操作中创建选择列表并将其直接暴露给JSP。
答案 1 :(得分:0)
尝试将表单样式放在jsp struts2表单中,并尝试查看如何调用该函数,因为可能你做错了