javascript - 根据复选框显示隐藏内容,如果选中一个复选框,则禁用另一个复选框

标签 javascript jquery html

我有三个复选框,默认情况下会选中第一个复选框并显示内容,对应于第一个复选框。

如果我选中了第二个复选框,则第一个复选框将取消选中,并且内容将更改,对应于第二个复选框。

如果我选中了第三个复选框,则其余复选框将取消选中,并且内容将更改,对应于第三个复选框。

下面是我的代码,但有些它不起作用

    <fieldset class="question">
           <label for="coupon_question">Show India content</label><input class="coupon_question" type="checkbox" name="coupon_question" value="1" />

       </fieldset>

       <fieldset class="question">
           <label for="coupon_question">Show Japan content</label><input class="coupon_question" type="checkbox" name="coupon_question" value="1" />

       </fieldset>

       <fieldset class="question">
           <label for="coupon_question">Show China content</label><input class="coupon_question" type="checkbox" name="coupon_question" value="1" />

       </fieldset>

       <fieldset class="answer">
           <label for="coupon_field">India Content:</label>
           <input type="text" name="coupon_field" id="coupon_field"/>
       </fieldset>

       <fieldset class="answer">
           <label for="coupon_field">Japan Content:</label>
           <input type="text" name="coupon_field" id="coupon_field"/>
       </fieldset>


       <fieldset class="answer">
           <label for="coupon_field">China Content:</label>
           <input type="text" name="coupon_field" id="coupon_field"/>
       </fieldset>

Below is my jquery

<script>
    $(".answer").hide();
    $(".coupon_question").click(function() {
        if($(this).is(":checked")) {
            $(".answer").show();
        } else {
            $(".answer").hide();
        }
    });
</script>

最佳答案

解决这个问题的一种方法是获取复选框的索引,并使用它来阻止应显示的答案。

$(".answer").hide();
$(".coupon_question").click(function() {
  var i = $(this).index(".coupon_question");
  if ($(this).is(":checked")) {
    $(".answer").eq(i).show();
  } else {
    $(".answer").eq(i).hide();
  }
});

带有复选框的演示

$(".answer").hide();
$(".coupon_question").click(function() {
  var i = $(this).index(".coupon_question");
  if ($(this).is(":checked")) {
    $(".answer").eq(i).show();
  } else {
    $(".answer").eq(i).hide();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<fieldset class="question">
  <label for="coupon_question">Show India content</label><input class="coupon_question" type="checkbox" name="coupon_question" value="1" />

</fieldset>

<fieldset class="question">
  <label for="coupon_question">Show Japan content</label><input class="coupon_question" type="checkbox" name="coupon_question" value="1" />

</fieldset>

<fieldset class="question">
  <label for="coupon_question">Show China content</label><input class="coupon_question" type="checkbox" name="coupon_question" value="1" />

</fieldset>

<fieldset class="answer">
  <label for="coupon_field">India Content:</label>
  <input type="text" name="coupon_field" />
</fieldset>

<fieldset class="answer">
  <label for="coupon_field">Japan Content:</label>
  <input type="text" name="coupon_field" />
</fieldset>


<fieldset class="answer">
  <label for="coupon_field">China Content:</label>
  <input type="text" name="coupon_field" />
</fieldset>

带有 radio 的演示

$(".answer").hide();
$(".coupon_question").click(function() {
  var i = $(this).index(".coupon_question");
  $(".answer").hide();
  $(".answer").eq(i).show();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<fieldset class="question">
  <label for="coupon_question">Show India content</label><input class="coupon_question" type="radio" name="coupon_question" value="1" />

</fieldset>

<fieldset class="question">
  <label for="coupon_question">Show Japan content</label><input class="coupon_question" type="radio" name="coupon_question" value="1" />

</fieldset>

<fieldset class="question">
  <label for="coupon_question">Show China content</label><input class="coupon_question" type="radio" name="coupon_question" value="1" />

</fieldset>

<fieldset class="answer">
  <label for="coupon_field">India Content:</label>
  <input type="text" name="coupon_field" />
</fieldset>

<fieldset class="answer">
  <label for="coupon_field">Japan Content:</label>
  <input type="text" name="coupon_field" />
</fieldset>


<fieldset class="answer">
  <label for="coupon_field">China Content:</label>
  <input type="text" name="coupon_field" />
</fieldset>

关于javascript - 根据复选框显示隐藏内容,如果选中一个复选框,则禁用另一个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58976980/

相关文章:

javascript - 防伪造 token 和 Ajax JSON.stringify Post 不起作用

javascript - 1 秒后隐藏 Canvas ctx.rect() - Javascript

使用 nodejs 时的 JavaScript 命名约定

javascript - jQuery 语法错误 - 意外的标记

javascript - hasClass 和条件不工作

html - 我可以让这个字体有一个线宽,以便它在下一行继续吗?

javascript - 通过 CSS 和 JS 的两个重叠图像

javascript - 是什么导致了这个 JS 控制台错误?

javascript - 为什么 Twitter Bootstrap 类 navbar-fixed-top 不起作用?

jquery - 如何自定义布局 h :selectOneRadio