使用复选框启用/禁用按钮

Posted

技术标签:

【中文标题】使用复选框启用/禁用按钮【英文标题】:Enable/Disable button using checkboxes 【发布时间】:2020-12-28 13:36:35 【问题描述】:

如果两个复选框都被选中,我需要启用/禁用按钮。我想在 knockout.js 中做。我还是个初学者。我找到了一个示例enable/disable button using checkbox,但这适用于 1 个复选框。在我的场景中,我有两个复选框,它们都应该被选中以启用按钮。如果未选中任何复选框,则应禁用该按钮。

<input type="checkbox" data-bind="checked: myBoolean" />
<button data-bind="enable: myBoolean">My Button</button>

ko.applyBindings( myBoolean: ko.observable(true) );

任何帮助或建议将不胜感激。

提前致谢

【问题讨论】:

【参考方案1】:

你可以

    为另一个复选框添加另一个 observable 为按钮添加一个computed observable,只有当两个复选框都被选中时才返回true(observables为true)

var test =  
  myBoolean1: ko.observable(false),
  myBoolean2: ko.observable(false)
;
test.myComputed = ko.computed(function()  return test.myBoolean1() && test.myBoolean2() );

ko.applyBindings(test);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input type="checkbox" data-bind="checked: myBoolean1" />
<input type="checkbox" data-bind="checked: myBoolean2" />
<button data-bind="enable: myComputed">My Button</button>

【讨论】:

感谢菲利普,这正是我想要的。有没有办法可以检查 myBoolean1 或 myBoolean2 是否存在。可能存在只有 1 个复选框的情况 在这种情况下,您应该创建一个对象和 html,就像您在问题中所写的那样。【参考方案2】:

您只能使用 CSS 来做到这一点。除非你需要支持 IE10 或更低版本。

button 
  cursor: not-allowed;
  pointer-events: none;
  color: grey;
  background-color: white;


#firstCheckbox:checked+#secondCheckbox:checked+button 
  color: black;
  cursor: pointer;
  pointer-events: auto;
<input type="checkbox" id="firstCheckbox">
<input type="checkbox" id="secondCheckbox">
<button>Click me</button>

【讨论】:

有没有办法在 Knockout.js 中做到这一点?

以上是关于使用复选框启用/禁用按钮的主要内容,如果未能解决你的问题,请参考以下文章

禁用或启用复选框已选中事件的提交按钮

单击相应复选框时如何启用禁用的锚按钮

如果选中/取消选中复选框,则启用/禁用提交按钮?

复选框标签启用禁用敲除js

如果所有复选框都未选中,则禁用按钮,如果至少选中一个,则启用它

Jquery 启用和禁用 Asp.net 按钮