多个复选框以启用/禁用javascript中的一个选择器

Posted

技术标签:

【中文标题】多个复选框以启用/禁用javascript中的一个选择器【英文标题】:multiple check boxes to enable/disable just one selector in javascript 【发布时间】:2021-10-30 12:31:08 【问题描述】:

我正在尝试使选择器可用,只有在选中一个或多个复选框时才可用。如果用户取消选中所有复选框,则选择器应返回禁用状态。

我试图从这个response 实现我的解决方案(它非常适合与任何其他选择器配对的一个复选框);但是,当我这样实现时:

$(document).ready(function()
  var enable_sel = function()
    $("#pizza_kind").prop("disabled", !$(":checkbox").prop("checked"));
  ;

  enable_sel();
  $(":checkbox").change(enable_sel);

); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form>
  <input type="checkbox" id="p1" name="p1">
  <input type="checkbox" id="p2" name="p2">
  <input type="checkbox" id="p3" name="p3">

  <select name="pizza_kind" id="pizza_kind">
    <option>(choose one)</option>
    <option>"Hawaian"</option>
    <option>"Peperonni"</option>
    <option>"Another"</option>
  </select>
</form>

我禁用了选择器,但它似乎只对第一个复选框做出反应,而不是其余的复选框。

我无法在 javascript/html sn-p 中完成这项工作,不知道为什么。

我目前正在使用 Flask 和 jquery 3.6.0

我做错了什么?

【问题讨论】:

这能回答你的问题吗? jQuery see if any or no checkboxes are selected 请注意,我认为您可能将“选择器”和“选择”混为一谈。我个人从未听说过 &lt;select /&gt; 元素被称为“选择器”,但我确实认为“选择器”是一种在 CSS 或 querySelector/querySelectorAll 中匹配元素的方式。不过,我想这可能会因学科或地区而有所不同。 @SvenEberth,我尝试了该答案中的两个主要解决方案,但无法使其正常工作,请参阅here 。再次,我不知道我是否搞砸了。 .. @AlexanderNied,感谢您的快速响应。我正在从引导主题改编&lt;select&gt;,我认为这是正确的命名法,一直在使用它们没有任何问题,我正在使用Flask,并且选择一些选项,也许我的问题中的标题不正确。 【参考方案1】:

当你从一个集合中读取一个道具时,它只会选择第一个。它不会随机选择你想要的那个,所以你需要告诉它确切的选择。

所以选择选中的复选框并检查长度。为此,请在选择器中使用 :checked,它将选择选中的那些。

$(document).ready(function()
  var enable_sel = function()
    $("#pizza_kind").prop("disabled", !$(":checkbox:checked").length);
  ;

  enable_sel();
  $(":checkbox").change(enable_sel);

); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form>
  <input type="checkbox" id="p1" name="p1">
  <input type="checkbox" id="p2" name="p2">
  <input type="checkbox" id="p3" name="p3">

  <select name="pizza_kind" id="pizza_kind">
    <option>(choose one)</option>
    <option>"Hawaian"</option>
    <option>"Peperonni"</option>
    <option>"Another"</option>
  </select>
</form>

【讨论】:

是的,@epascarello,非常感谢!它有效!

以上是关于多个复选框以启用/禁用javascript中的一个选择器的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式启用Windows Phone 7应用程序中的禁用复选框

如果复选框选中禁用其他,如果未选中启用所有 JavaScript?

如何以编程方式启用/禁用 UICollectionView 中的部分标题?

asp.net c#.net jquery / javascript 如何使用复选框启用或禁用 requiredfieldvalidator

将 Drupal 视图过滤器公开为开/关复选框以启用/禁用过滤器

单击禁用按钮时生成警报窗口