【问题标题】:Show box or input box on checked box在复选框上显示框或输入框
【发布时间】:2013-09-08 17:04:19
【问题描述】:

我怎样才能使这项工作...

如果我选择一个框,它会显示我的输入框或在选中一个框时我需要显示的任何内容...问题是我有 5 个复选框...

所以如果用户选择

Box 1 [x]
Box 2 [x]
Box 3 [x]
box 4 [x]
Box 5 [ ]

到目前为止,代码工作正常...但随后他/她意识到不再需要 Box 3 并希望将 3 切换为 5 ...在单击提交按钮之前

Box 1 [x]
Box 2 [x]
Box 3 [ ]
box 4 [x]
Box 5 [x]

当这种情况发生时,输入框会从显示变为隐藏......我不希望这样,因为仍然选择了 1、2、4 和 5......

如果没有选择任何人,那么肯定什么都不显示...但是只要选择了一个,那么输入框或按钮或文本或任何需要的东西都必须显示...

下面是测试代码:

HTML

  <input type="checkbox" name="supplied" id="supplied" value="supplied" class="aboveage2" />
  <input type="checkbox" name="supplied" id="supplied_1" value="supplied" class="aboveage2" />
  <input type="checkbox" name="supplied" id="supplied_2" value="supplied" class="aboveage2" />
  <input type="checkbox" name="supplied" id="supplied_3" value="supplied" class="aboveage2" />
  <input type="checkbox" name="supplied" id="supplied_4" value="supplied" class="aboveage2" />
  <input type="checkbox" name="supplied" id="supplied_5" value="supplied" class="aboveage2" />

<ul id="date" style="display:none">
    <li><input id="start" name="start" size="5" type="text" class="small" value="1" /></li>
    <li><input id="end" name="end" size="5" type="text" class="small" value="2" /></li>
</ul>

Java

  $('#supplied, #supplied_1, #supplied_2, #supplied_3, #supplied_4, #supplied_5').live('change', function(){
      if ( $(this).is(':checked') ) {
         $('#date').show();
     } else {
         $('#date').hide();
     }
 });

现场测试链接: http://jsfiddle.net/GBSZ8/284/

谢谢。

【问题讨论】:

    标签: javascript jquery html css checkbox


    【解决方案1】:
    $('.aboveage2').live('change', function() {
    
        if ( $(".aboveage2:checked").length > 0 ) {
            $('#date').show();
        } else {
            $('#date').hide();
        }
    });
    

    演示:http://jsfiddle.net/samliew/GBSZ8/295/

    请注意,live 仅适用于 jQuery 1.7 或更低版本。要迁移到最新的 jQuery,请参阅jQuery 1.9 .live() is not a function


    更新:

    您网站上的复选框类与问题中的不同!!!

    改用这个选择器:

    $('input[name*=accessory_id]').live('change', function() {
    
        if ( $("input[name*=accessory_id]:checked").length > 0 ) {
            $('#date').show();
        } else {
            $('#date').hide();
        }
    });
    

    【讨论】:

    • 谢谢你,你的例子,没有工作......它只改变了第一个元素,其余的没有......但是谢谢......
    • 哦,我的……我应该多加注意!谢谢!假设您有 10 个项目,每个项目都有图像,但只有 3 个项目有“noimage.jpg”,如果有,那么隐藏某些单选按钮......这可能吗?
    • 您好 Samuel,如果您愿意看一下,我只是打开一个新问题:stackoverflow.com/questions/18629821/… 谢谢。
    【解决方案2】:

    我更改了您的选择器。我的上下文有限,但根据您提供的示例,这似乎是一个更好的选择。

    $('.aboveage2').bind('change', function(){
      var $inputs = $(this).siblings('input').add($(this));
      var checked = false;
      for (var i = 0; i < $inputs.length; i++) {
        var input = $inputs[i];
        checked = $(input).is(':checked');
        if (checked) break;
      }
      $('#date').toggle(checked);
    });
    

    此解决方案只是循环遍历每个复选框。如果选中该复选框,则它会从循环中中断并确保 $("#date") 正在显示。否则它将隐藏 $("#date")。

    http://jsfiddle.net/RV4aJ/

    【讨论】:

    • 谢谢.. 一些东西,正在工作.. 但我需要使用 ID 而不是类......但这个例子正在工作......
    • 没问题。我已经更新了 jsfiddle 以使用您的原始 ID。 jsfiddle.net/RV4aJ/3。一切都应该仍然有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多