我写了一个javascript函数。
function wellChecked(state) {
if (state)
{
wellDropDown.style.visibility = 'visible';
}
else
{
wellDropDown.style.visibility = 'hidden';
}
}
我在Well Modification <td>
之后有一个复选框,如下所示,
<tr>
<td>On Call</td>
<td><html:checkbox property="onCall"/></td>
<td>Well Modification</td>
<td><input type="checkbox" onclick="wellChecked(this.checked)" /></td>
</tr>
单击该复选框时,我希望显示div id=wellDropDown
下的下拉列表。默认情况下,如果未单击复选框,则不应显示下拉列表。
<tr>
<td>Active</td>
<td><html:checkbox property="active"/></td>
<div id="wellDropDown" style="visibility:hidden;">
<td>
<html:select property="wellFormatId">
<html:option value="">(Select)</html:option>
<bean:define id="wellFormatColl" name="wellFormats" scope="request"/>
<logic:iterate id="wellFormats" name="wellFormatColl" indexId="index" type="com.astrazeneca.compis.data.WellFormatVO">
<% Long wellId = wellFormats.getWellFormatId();%>
<% String wellIdNo = wellId.toString(); %>
<html:option value="<%=wellIdNo%>">
<bean:write name="wellFormats" property="wellFormatName"/>
</html:option>
</logic:iterate>
</html:select>
</td>
</div>
</tr>
当我尝试执行此代码时,无论选中或未选中复选框,我都会看到显示下拉列表。
我在这种情况下出错了?请提供您的建议或方法来实现我的要求。
答案 0 :(得分:3)
您的HTML无效。您可能没有div
这样的td
。要么使td
本身可见或不可见,要么将div
放在td
内,而不是将其放在td
周围。
此外,除非wellDropDown
是全局JS变量,否则代码应为
document.getElementById("wellDropDown").style.visibility = 'visible';
答案 1 :(得分:1)
使用jquery你可以这样做:
<tr>
<td>On Call</td>
<td><html:checkbox property="onCall"/></td>
<td>Well Modification</td>
<td><input type="checkbox" id="myCheckBox" /></td>
</tr>
...
<script>
$('#myDropDown').click(
function () {
$("#wellDropDown").toggle();
});
);
</script>