[英]Show/Hide Form Fields on checkbox checked/unchecked
我使用JavaScript來顯示/隱藏表單中的其他字段,具體取決於是否單擊了相關復選框。 這些字段是隱藏的,並且在選中復選框時會顯示,但在未選中時不要隱藏。 但是,當我再次選中復選框時,這些字段確實隱藏。
我有一個id='cb_post'
的復選框和一個onclick
命令,可以從我的外部javascript文件中獲取showDiv()
。 我也有id='hiddenDiv'
的隱藏字段。
我的JavaScript腳本很簡單:
function showDiv() {
if (document.getElementById('hiddenDiv').style.display == 'block') {
(document.getElementById('hiddenDiv').style.display = 'none');
} else {
document.getElementById('hiddenDiv').style.display = 'block';
}
}
任何人都可以建議取消選中復選框時如何隱藏字段嗎?
您應該考慮使用jQuery
$("#hiddenDiv").hide();
$("#hiddenDiv").show();
還有更好的東西
$("#hiddenDiv").fadeOut();
$("#hiddenDiv").fadeIn();
我認為使用jQuery切換更適合您的問題:
<input type="checkbox" id="cb_post">
<div id = "hiddenDiv">
<li>Toggle me</li>
</div>
$("#cb_post").on('click', function(){
$("#hiddenDiv").toggle();
});
也許使用事件onchange
而不是onclick
會更優雅。
這是工作代碼:
var chebx = document.getElementsByClassName('toggleField'); for (var i = 0; i < chebx.length; i++) { chebx[i].addEventListener('click', toggleField, false); } function toggleField() { var field = document.getElementById(this.dataset.target); if (field) { switch (this.checked) { case true: if (field.classList.contains('hide')) { field.classList.remove('hide'); } else { field.classList.add('hide'); } break; default: break; } } }
.hide { display: none; }
<lable for='toggleField'>Toggle Field</lable> <input type="checkbox" data-target='field1' class='toggleField'> <input type='text' class='hide' id='field1' /> <hr> <lable for='toggleField'>Toggle Field</lable> <input type="checkbox" data-target='field2' class='toggleField'> <input type='text' class='hide' id='field2' />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.