多个复选框状态已选中
Multiple checkboxes state checked
我用的是knockout Js。有两个复选框。如果未选中任何复选框,则提交按钮将被禁用。可能会有 1 个复选框而不是 2 个复选框的情况。所以我有这样的条件
if ((self.checkBox1() === true && self.checkBox2() === true) || ($("#checkbox2").length <= 0 && self.checkBox1() === true) || ($("#checkbox1").length <= 0 && self.checkBox2() === true)) {
$('.submit-btn').attr('disabled', false);
} else {
$('.submit-btn').attr('disabled', true);
}
return true;
}
这是我创建的 Jsfiddle 样本。
有更好的方法吗?
$('.submit-btn').attr('disabled', ![...document.querySelectorAll('[type="checkbox"]')].every(cb=cb.checked)));
在这种情况下,我们要检查页面上的所有复选框是否都已选中,这是一个 returns 和 true/false 的过程,并使用该值直接更改按钮上的禁用状态.
如果同一页面上也有 NON-required 个复选框的可能性,对 querySelectorAll('[type="checkbox"]')
部分的小改动将处理它:给所需的 CB 一个 class="required"
( querySelectorAll('.required[type="checkbox"]'
),或定位其父容器 (querySelectorAll('#parent [type="checkbox"]'
这样的事情会是一个好的开始。
var ViewModel = function() {
var self = this;
self.checkBox1 = ko.observable(false);
self.checkBox2 = ko.observable(false);
self.submitEnabled = ko.pureComputed(function(){
return self.checkBox1() && self.checkBox2();
});
self.submitForm = function(){
alert("Woohoo, I can submit!!");
}
};
ko.applyBindings(new ViewModel());
h3 {
font-size: 120%;
font-weight: bold;
margin-top: 5px;
}
#bookform {
margin: 10px;
padding: 20px 20px 25px 20px;
background-color: #eee;
}
input {
width: 100%;
padding: 4px;
}
.button {
margin: 12px 0 0 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div id="bookform">
<input type="checkbox" id="checkbox1" data-bind="checked: checkBox1"> Checkbox 1
<input type="checkbox" id="checkbox2" data-bind="checked: checkBox2">Checkbox 2
<button type="button" id="myBtn" class="btn btn-primary submit-btn" data-bind="click: submitForm, enable: submitEnabled">Submit</button>
</div>
我用的是knockout Js。有两个复选框。如果未选中任何复选框,则提交按钮将被禁用。可能会有 1 个复选框而不是 2 个复选框的情况。所以我有这样的条件
if ((self.checkBox1() === true && self.checkBox2() === true) || ($("#checkbox2").length <= 0 && self.checkBox1() === true) || ($("#checkbox1").length <= 0 && self.checkBox2() === true)) {
$('.submit-btn').attr('disabled', false);
} else {
$('.submit-btn').attr('disabled', true);
}
return true;
}
这是我创建的 Jsfiddle 样本。
有更好的方法吗?
$('.submit-btn').attr('disabled', ![...document.querySelectorAll('[type="checkbox"]')].every(cb=cb.checked)));
在这种情况下,我们要检查页面上的所有复选框是否都已选中,这是一个 returns 和 true/false 的过程,并使用该值直接更改按钮上的禁用状态.
如果同一页面上也有 NON-required 个复选框的可能性,对 querySelectorAll('[type="checkbox"]')
部分的小改动将处理它:给所需的 CB 一个 class="required"
( querySelectorAll('.required[type="checkbox"]'
),或定位其父容器 (querySelectorAll('#parent [type="checkbox"]'
这样的事情会是一个好的开始。
var ViewModel = function() {
var self = this;
self.checkBox1 = ko.observable(false);
self.checkBox2 = ko.observable(false);
self.submitEnabled = ko.pureComputed(function(){
return self.checkBox1() && self.checkBox2();
});
self.submitForm = function(){
alert("Woohoo, I can submit!!");
}
};
ko.applyBindings(new ViewModel());
h3 {
font-size: 120%;
font-weight: bold;
margin-top: 5px;
}
#bookform {
margin: 10px;
padding: 20px 20px 25px 20px;
background-color: #eee;
}
input {
width: 100%;
padding: 4px;
}
.button {
margin: 12px 0 0 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div id="bookform">
<input type="checkbox" id="checkbox1" data-bind="checked: checkBox1"> Checkbox 1
<input type="checkbox" id="checkbox2" data-bind="checked: checkBox2">Checkbox 2
<button type="button" id="myBtn" class="btn btn-primary submit-btn" data-bind="click: submitForm, enable: submitEnabled">Submit</button>
</div>