4

默认情况下,两个 DIV 都应该被隐藏。通过选择单选按钮,必须显示适当的 DIV(在其#ID 之后)。

下面是我的代码:

<input type="radio" name='thing' value='valuable' id="bank"/>
<input type="radio" name='thing' value='valuable' id="school"/>

<div id="bank" class="none">Bank</div>
<div id="school" class="none">School</div>

<style> .none { display:none; } </style>

但是我们一次只能显示一个 div。可能吗?

4

8 回答 8

11

这可以使用 CSS 来完成。

注意:<div>s 必须是<input>元素的一般兄弟。

HTML:

<form>
    <input type="radio" name="showGreen"> Green
    <input type="radio" name="showRed"> Red
    <div id="green">I am the green div.</div>
    <div id="red">I am the red div.</div>
</form>

CSS:

#green, #red {
    display: none;
    padding: 10px;
}

#green {
    background-color: #6f6;
}

#red {
    background-color: #f44;
}

input[name="showGreen"]:checked ~ #green,
input[name="showRed"]:checked ~ #red {
    display: block;
}

JSFiddle:http: //jsfiddle.net/Ly56w/

于 2014-06-16T02:28:16.857 回答
10

您可以在data-*此处使用该属性,例如:

HTML

<input type="radio" name='thing' value='valuable' data-id="bank" />
<input type="radio" name='thing' value='valuable' data-id="school" />

JS

$(':radio').change(function (event) {
    var id = $(this).data('id');
    $('#' + id).addClass('none').siblings().removeClass('none');
});

工作小提琴演示

于 2013-07-03T11:04:48.213 回答
2

尝试这个:

HTML:

<input type="radio" name='thing' value='valuable' id="bank"/>
<input type="radio" name='thing' value='valuable' id="school"/>

<div id="bank_div" class="none choice">Bank</div>
<div id="school_div" class="none choice">School</div>

JS:

$("input[type=radio]").click(function(event) {
    var myId = this.id;
    var targetId = myId + "_div";
    $("div.choice:not(#" + targetId + ")").addClass(".none");
    $("#" + targetId).removeClass(".none");
});
于 2013-07-03T10:57:59.280 回答
2

这是我使用 jQuery 的解决方案:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>

<script>
function showBank()
{
$("#bankDIV").removeClass("none");
$("#bankDIV").addClass("showDIV");

//Make sure schoolDIV is not visible
$("#schoolDIV").removeClass("showDIV");
$("#schoolDIV").addClass("none");
}

function showSchool()
{
$("#schoolDIV").removeClass("none");
$("#schoolDIV").addClass("showDIV");

//Make sure bankDIV is not visible
$("#bankDIV").removeClass("showDIV");
$("#bankDIV").addClass("none");
}
</script>


</head>
<body>

<input type="radio" name='thing' value='valuable' id="bank" onclick="showBank()"/>
<input type="radio" name='thing' value='valuable' id="school" onclick="showSchool()"/>

<div id="bankDIV" class="none">Bank</div>
<div id="schoolDIV" class="none">School</div>

<style> 
.none { display:none; }, 
.showDIV { display:block; } 
</style>

</body>
</html>

确保您的代码中没有出现重复的 ID。并且一次只能看到一个 DIV。

问候,亚历克斯

于 2013-07-03T11:34:55.063 回答
1
<input type="radio" name='thing' value='valuable' id="bank"/>
<input type="radio" name='thing' value='valuable' id="school"/>

<div id="bankDiv" class="none">Bank</div>
<div id="schoolDiv" class="none">School</div>

<style> .none { display:none; } </style>

jQuery:

$(function() {
    $('input[type="radio"]').change(function() {
        var rad = $(this);
        ('input[type="radio"]').addClass('none');
        if (rad.is(':checked'))
            ('#' + rad.attr('id') + 'Div').removeClass('none');
    });
});
于 2013-07-03T11:00:11.320 回答
1

这对我有用:

<div class="form-group">
        <label>Please select Your Payment Option:</label><br>
        <input id='watch-me1' name='payment' type='radio' class='show-me1' value="Cash On Delivery" checked /> Cash On Delivery<br />
        <div id='show-me1' style='display:none;border:1px solid black;color:red;'>Not Available At This Moment!</div>

        <input id='watch-me2' name='payment' type='radio' class='show-me2' value="Bkash/Rocket Mobile" /> Bank<br />
        <div id='show-me2' style='display:none;border:1px solid black;'>Not Available At This Moment!</div>

        <input id='watch-me3' name='payment' type='radio' class='show-me3' value="Credit/Debit Card" /> Credit/Debit Card<br />
        <div id='show-me3' style='display:none;border:1px solid black;'>Not Available At This Moment!</div>

        <input id='watch-me4' name='payment' type='radio' class='show-me4' value="Paypal" /> Paypal<br />
        <div id='show-me4' style='display:none;border:1px solid black;'>Not Available At This Moment!</div>
    <script>
          $(function(){
          $(':radio').click(function() {
          $('#' + $(this).attr('class')).fadeIn().siblings('div').hide();
          })
         .filter(':checked').click();
          });
     </script>

    </div>
于 2017-07-15T07:16:10.563 回答
0

首先,您将相同的 id 用于 2 个或更多控件并不是一个更好的方法...

请为每个元素创建一个唯一的 ID。

使用此代码...

<input type="radio" name='thing' value='valuable' id="bank"/>
<input type="radio" name='thing' value='valuable' id="school"/>

<div id="radio_divs">
<div id="bank_div" class="none">Bank</div>
<div id="school_div" class="none">School</div>
</div>
<style> .none { display:none; } 
.view { display:block; }
</style>

现在在单选按钮上使用 onclick ...

jQuery("input[type=radio]").click(function(event) {
    jQuery('#radio_divs').children('div').each(function () {
        jQuery(this).addClass(".none");
    });
    jQuery("#" + this.id + "_div").addClass(".view");
});

它肯定会起作用并使其仅可见单个 div 和其余 div 使其不可见....

于 2013-07-03T11:08:51.497 回答
0

你也可以试试这个

<input type="radio" name='thing' value='valuable' id="bank"/> <input type="radio" name='thing' value='valuable' id="school"/>

<div id="bankDiv" class="none">Bank</div> <div id="schoolDiv" class="none">School</div>

css

.none { display:none; }

jQuery

$(function() {
    $('input[type="radio"]').change(function() {
        var rad = $(this).attr('id');           
            $('#' + rad + 'Div').show();
            $('#' + rad + 'Div').siblings('div').hide();
    });
});

看看这个小提琴:http: //jsfiddle.net/Kritika/f2UKj/

于 2013-07-12T16:32:32.727 回答