#javascript #jquery #checkbox
#javascript #jquery #флажок
Вопрос:
Привет, я новичок в javascript здесь и jquery и абсолютно не знаю, что я делаю. У меня есть 4 флажка. 1-4. Мне нужно, чтобы флажки 1 и 2, когда установлен один или оба флажка, отображали скрытый #div1 и снимали флажки 3 и 4 (если они установлены) и скрывали div2, если они показаны. Затем 3 и 4 флажка, если установлен один или оба флажка, показывают скрытый #div2 и снимают флажки 1 и 2 (если они установлены) и скрывают div1, если они показаны.
Вот мой html без какого-либо javascript. пробовал некоторые, но у меня просто не слишком хорошо получается.
<html>
<head>
<style type="text/css">
<!--
.divstyle
{
display: none;
border: 1px solid #000;
height: 100px;
width: 200px;
margin: 10px 0 0 0;
}
-->
</style>
</head>
<body>
<p>
<input name="chk1" type="checkbox" id="chk1"/>
Group1 Black
<input name="chk2" type="checkbox" id="chk2"/>
Group1 White
<input name="chk3" type="checkbox" id="chk3"/>
Group2 Red
<input name="chk4" type="checkbox" id="chk4"/>
Group2 Blue</p>
<div class="divstyle" id="div1">This is Group 1 for Black and White</div>
<div class="divstyle" id="div2">This is Group 2 for Red and Blue</div>
</body>
</html>
Я надеюсь, что я здесь что-то понимаю.
Ребята, вы можете помочь? Заранее спасибо.
Комментарии:
1. Пожалуйста, поделитесь кодом. HTML и Javascript. Спасибо
2. Да, вот мой код, мне нужно было выяснить, как опубликовать исходный код здесь, ничего не нарушая.
Ответ №1:
Это должно сработать для вас:
$("#chk1, #chk2").click(function(){
$("#chk3, #chk4").removeAttr("checked");
$("#div1").show();
$("#div2").hide();
});
$("#chk3, #chk4").click(function(){
$("#chk1, #chk2").removeAttr("checked");
$("#div2").show();
$("#div1").hide();
});
Просто зарегистрируйте .click()
обработчик для ваших флажков, на которые нацелен id
. Используйте .removeAttr()
, чтобы снять другие флажки. Затем используйте .show()
и .hide()
для отображения правильного div.
Комментарии:
1. Боже, это было довольно быстро! Спасибо, я попробую это и вернусь со своими комментариями.
2. Да, это прекрасно работает в chrome, Firefox и ie. Просто идеально. Теперь я могу лучше стилизовать внешний вид в css должным образом. Большое тебе спасибо, Марк.
3. @wolverene, поскольку это ответ на ваш вопрос, пожалуйста, выберите его в качестве правильного ответа.
4. Хорошо, я повозился с этим ответом и другими. Я не очень хорош в javascript и, возможно, это не мое лучшее суждение. Но я чувствую, что это самый короткий и простой в реализации.
5. Я немного изменил несколько, и затем это отлично сработало вместе с моим css и прочим. Я изменил отображение и скрытие с помощью slideUp и slideDown для приятного эффекта, не становясь слишком затейливым, и это выполняет свою работу. Потрясающе. Я многому научился из этого небольшого опыта. Я имею в виду многое, что я узнал из всех других сообщений. stackoverflow потрясает!!!
Ответ №2:
<html>
<head>
<style type="text/css">
<!--
.divstyle
{
display: none;
border: 1px solid #000;
height: 100px;
width: 200px;
margin: 10px 0 0 0;
}
.hidden {
visibility: hidden;
position: absolute;
}
-->
</style>
</head>
<body>
<p>
<input name="chk1" type="checkbox" id="chk1" class="first"/>
Group1 Black
<input name="chk2" type="checkbox" id="chk2" class="first"/>
Group1 White
<input name="chk3" type="checkbox" id="chk3" class="second"/>
Group2 Red
<input name="chk4" type="checkbox" id="chk4" class="second"/>
Group2 Blue
</p>
<div class="divstyle" id="div1">This is Group 1 for Black and White</div>
<div class="divstyle" id="div2">This is Group 2 for Red and Blue</div>
<script type="text/javascript">
$('input').live("click", function () {
var reset_class;
var show_id;
var hide_id;
switch (this.className) {
case 'first':
reset_class = 'second';
show_id = 'div1';
hide_id = 'div2';
break;
case 'second':
reset_class = 'first';
show_id = 'div2';
hide_id = 'div1';
}
$('.' reset_class).attr('checked', false);
$('#' show_id).removeClass();
$('#' hide_id).addClass('hidden');
});
</script>
</body>
</html>
Комментарии:
1. Это очень интересный скрафи. Я тоже попробую это. Спасибо
Ответ №3:
Вот полный пример,
<html>
<head>
<style type="text/css">
<!--
.divstyle
{
display: none;
border: 1px solid #000;
height: 100px;
width: 200px;
margin: 10px 0 0 0;
}
-->
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#chk1, #chk2').click(function() {
var show;
$('#chk1, #chk2').each(function () {
if ($(this).attr("checked")) {
show = true;
$('#div1').show();
$('#div2').hide();
$('#chk3, #chk4').attr("checked", false);
}
});
if (!show)
$('#div1').hide();
});
$('#chk3, #chk4').click(function() {
var show;
$('#chk3, #chk4').each(function () {
if ($(this).attr("checked")) {
show = true;
$('#div1').hide();
$('#div2').show();
$('#chk1, #chk2').attr("checked", false);
}
});
if (!show)
$('#div2').hide();
});
});
</script>
</head>
<body>
<p>
<input name="chk1" type="checkbox" id="chk1"/>
Group1 Black
<input name="chk2" type="checkbox" id="chk2"/>
Group1 White
<input name="chk3" type="checkbox" id="chk3"/>
Group2 Red
<input name="chk4" type="checkbox" id="chk4"/>
Group2 Blue</p>
<div class="divstyle" id="div1">This is Group 1 for Black and White</div>
<div class="divstyle" id="div2">This is Group 2 for Red and Blue</div>
</body>
</html>
Комментарии:
1. Ого, это настоящий опыт обучения. Я попробую это тоже jumperchen. Спасибо.