单选按钮+复选框组合

时间:2011-08-25 19:24:59

标签: javascript checkbox radio-button dynamic show-hide

目标是我有一对单选按钮,每对单选按钮插入一个带博客文章的div中。 I.E.每个帖子都可以被喜欢(开启)/不喜欢(关闭)。然后,复选标记用作所有喜欢/不喜欢帖子的通用开关。下面的代码只是一个原型,但我确实想添加第二个复选框,让用户隐藏所有喜欢的内容,隐藏所有不喜欢的内容,隐藏两者(看看哪些尚未决定)或者没有。

在下面的代码中,我无法使复选框独立于单选按钮。实际上,选中此框会将单选按钮切换为开。我希望单选按钮保留在用户想要的位置,当选中该框时,只有IF收音机打开,隐藏的消息显示。如果收音机处于关闭状态,则选中此框将不会产生任何结果。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-NZ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Unhide on checkboxes/radio buttons</title>
<script type="text/javascript">
function toggleLayer(val)
{
    if(val == 'on' || val === true)
    {
        document.getElementById('a1').checked = true;
        document.getElementById('layer1').style.display = 'block';
    }
    else if(val == 'off' || val === false)
    {
        document.getElementById('a2').checked = true;
        document.getElementById('layer1').style.display = 'none';
    }
}
</script>
</head>
<body>
<form action="" method="post">
    <fieldset>
        <legend>Unhide Layer Form</legend>
        <ul>
            <li><label for="a1">On</label> <input id="a1" name="switcher" type="radio" value="off" checked="checked" onclick="toggleLayer(this.checked);" /> <label for="a2">Off</label> <input id="a2" name="switcher" type="radio" value="off" onclick="toggleLayer(!this.checked);" /></li>
            <li><label for="b1">Check Me:</label> <input id="b1" name="b1" type="checkbox" value="off" checked="checked" onclick="toggleLayer(this.checked);" /></li>
        </ul>
    </fieldset>
</form>
<div id="layer1">You can now see this.</div>
</body>
</html>

所以,有人可以帮我修改这段代码:

  1. 添加第二个复选框
  2. 让第一个复选框隐藏收音机开启的所有div
  3. 让第二个复选框隐藏收音机关闭的所有div
  4. 让收音机选择记住它们的位置,以便在用户返回时,调用其设置。

1 个答案:

答案 0 :(得分:-1)

首先,您应该知道强烈建议使用框架。例如。看看jQuery。示例:您可以开始用$(char)替换“document.getElementById”。这使您可以专注于解决问题,而不是如何做到(关键字,浏览器支持等)。