1

我想根据某个复选框是选中还是未选中来显示/隐藏一个 div。

请注意,这与使用 jQuery.click.change函数无关。这些在我的情况下不起作用。

我想要做的是,如果复选框字段有值,则显示某个 div checked="checked",否则隐藏它。

我不想默认显示/隐藏任何东西。我只想隐藏复选框unchecked,如果它是checked,则 div 应始终显示(即使在页面加载时)。

这是指向小提琴的链接(.click方法,它对我不起作用)https://jsfiddle.net/a5s5s4k3/

您可能会注意到 First Name 复选框已被选中,但其相邻的 div 仍处于隐藏状态。

任何帮助将不胜感激。

谢谢

4

3 回答 3

2

如果您愿意稍微更改您的标记,您可以使用纯 CSS 来做到这一点。

HTML

<p>
  <input type="checkbox" id="" name="" checked="checked" />
  <label>Enable First Name Field</label>
  <input type="text" id="" class="" name="" value="" />
</p>

<p>
  <input class="check2" type="checkbox" id="" name="" />
  <label>Enable Last Name Field</label>
  <input type="text" id="" name="" value="" />
</p>

CSS

input[type=checkbox] + label + input {
  display: none;
}

input[type=checkbox]:checked + label + input {
  display: block;
}

+操作员选择彼此相邻的元素。在这种情况下,我们的目标是复选框旁边的标签旁边的输入。如果您不熟悉兄弟选择器,请查看MDN 参考。它们非常方便。

更新小提琴:https ://jsfiddle.net/a5s5s4k3/2/

于 2016-02-27T18:34:33.643 回答
2

编写一个函数,该函数将始终检查复选框的状态并相应地隐藏和显示输入。您可以在文档准备好然后更改复选框时调用此函数。参考下面的代码

 $(function(){
      formatUI();

    $('input[type="checkbox"]').on('change',function(){
       formatUI();
    });

    function formatUI()
    {
        $.each($('input[type="checkbox"]'),function(){
             if($(this).attr('checked') === 'checked')
             {
               $(this).parent().next('p').show();
             }
             else{
              $(this).parent().next('p').hide();
             }
        });
    }


   });

这是一个工作小提琴

于 2016-02-27T18:56:42.153 回答
1

    $(document).on("click", "[type='checkbox']", function(e) {
            if (this.checked) {
                $(this).attr("value", "true");
            } else {
                $(this).attr("value","false");}
        });
<input type="checkbox" name="myCheckbox" checked="checked" value="true" />

于 2016-02-27T14:04:31.887 回答