使用 JavaScript 复选框事件切换 html 的可见性
Toggle visibility of html using javascript checkbox event
我将这些javascript函数拼凑在一起,以便在货物要到达账单地址时隐藏购物车地址表单上的送货地址字段。这些函数切换由 .. 包装的 html 的可见性。
function getItem(id) {
var itm = false;
if(document.getElementById)
itm = document.getElementById(id);
else if(document.all)
itm = document.all[id];
else if(document.layers)
itm = document.layers[id];
return itm;
}
function showHideItem(id) {
itm = getItem(id);
if(!itm)
return false;
if(itm.style.display == 'none')
itm.style.display = '';
else
itm.style.display = 'none';
return false;
}
如果正在加载新的地址表单,它工作正常,我遇到的问题是如果他们提交带有复选框的表单,并且验证失败,表单在勾选复选框的情况下重新加载,但不幸的是字段是可见的,所以现在删除复选框隐藏字段!!
<tr><td class="white"><strong>Delivery Address</strong></td>
<td>Tick <input Type="checkbox" id="deliver_same" value="yes" onClick="showHideItem('delAddress')" />
If delivery address is billing address</td></tr>
<tbody id="delAddress">
<tr><td>Address line 1</td><td><input class="text" name="saddr1" value="" /></td></tr>
...
<tr><td>Post /Zip Code</td><td><input class="text" name="spostalcode" value="" /></td></tr>
</tbody>
我想我需要的是一个 onload 事件,如果在表单加载时勾选复选框,它会隐藏字段。刚刚写了这篇文章,我可能会尝试一下,但没有信心。请不要提及jquery,在项目的这一点上它不是一个选项。
function checkDeliverSame() {
var deliverSame = getItem('deliver_same');
var deliveryAddress = getItem('delAddress');
if (deliverSame.checked) {
deliveryAddress.style.display = 'none';
} else {
deliveryAddress.style.display = 'block';
}
}
checkDeliverSame(); /* This runs the function on page load */
将该函数与getItem
函数放在 </body>
标记的正上方,并在单击时在复选框输入中调用它。您还需要将 id#delAddress
元素从 tbody
更改为 div
,以便 getItem 函数将对其进行处理。
这里有一个小提琴:http://jsfiddle.net/JuNhN/1/
我修改了Josh的函数,使其更加通用,也更喜欢document.getElementById(),因为它更适合itm.style.display。我不完全信任 checkDeliverSame();在结束标记后不久在 HTML 中进行直接调用。
function checkHiddenRows(id) {
deliverSame = getItem('deliver_same');
itm = document.getElementById(id);
if (deliverSame.checked == true) {
itm.style.display = 'none';
} // else { alert('Checkbox not checked') } // Verify the checkbox state
}
<script>checkHiddenRows('deliveryAddress');</script>
该表单现在按预期工作。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 使用 Javascript 将 HTML 页面中的默认可见性从可见更改为隐藏
- 通过单选按钮状态设置HTML元素的可见性
- html可见性样式;不起作用
- WebView中的Html页不会激发'可见性更改'用户按下主页按钮时的事件(iOS 8)
- 使用 JavaScript 复选框事件切换 html 的可见性
- 如何使用HTML / CSS / JS/在2个画布之间切换可见性
- 控制 HTML 溢出/可见性
- 在JavaScript / jQuery中,是否可以在滚动时跟踪页面上多个HTML元素的可见性
- 哪个更好?html中元素的可见性属性或显示属性
- 使用Javascript更改html可见性
- 使用angular js切换html元素的可见性
- Javascript使用单选按钮过滤html元素的可见性
- 试图使固定的表头在HTML,滚动和可见性问题
- 试图给html音频播放器特定的组件可见性和组件颜色的自定义
- 通过可见性而不是Ajax来更改HTML内容是不好的做法吗?
- 无法更改HTML元素的可见性
- HTML 页面中的角度属性可见性
- 使用jQuery/JavaScript操作HTML表(用于列重新排序、可见性)
- 如何使用knockoutjs切换html元素的可见性