我有一个像下面我们如何获得复选框的先前状态?
<input type="checkbox" ng-model="vm.somevalue" indeterminate " />
不确定的是,这将改变复选框的状态时vm.somevalue的值是不确定的一个指令,在我的应用程序的复选框。 现在,当我点击中间状态的复选框时,我需要取消选中复选框(vm.somevalue = false)。
任何帮助赞赏!
我有一个像下面我们如何获得复选框的先前状态?
<input type="checkbox" ng-model="vm.somevalue" indeterminate " />
不确定的是,这将改变复选框的状态时vm.somevalue的值是不确定的一个指令,在我的应用程序的复选框。 现在,当我点击中间状态的复选框时,我需要取消选中复选框(vm.somevalue = false)。
任何帮助赞赏!
您可以添加一个click
事件并将该状态的值存储在数据属性中。
$(function() {
$('input[type=checkbox]')
.setCheckbox('unchecked') // set initial state
.on('click', function(e) {
var $checkbox = $(this);
switch($checkbox.data('state')) {
case 0: // unchecked
$checkbox.setCheckbox('indeterminate');
console.log('Previous state: unchecked | New state: indeterminate');
break;
case 1: // indeterminate
$checkbox.setCheckbox('checked');
console.log('Previous state: indeterminate | New state: checked');
break;
case 2: // checked
$checkbox.setCheckbox('unchecked');
console.log('Previous state: checked | New state: unchecked');
break;
}
});
});
$.fn.setCheckbox = function(state) {
return $(this).each(function() {
var $checkbox = $(this);
if (state=='unchecked') {
$checkbox
.data('state',0)
.prop('indeterminate',false)
.prop('checked',false);
}
else if (state=='indeterminate') {
$checkbox
.data('state',1)
.prop('indeterminate',true)
.removeProp('checked');
}
else if (state=='checked') {
$checkbox
.data('state',2)
.prop('indeterminate',false)
.prop('checked',true);
}
});
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type="checkbox">
<input type="checkbox">
在我的例子我切换从unchecked
到indeterminate
到checked
。我知道你只要求indeterminate
至unchecked
,但我想给出一个完整的答案,可能对其他人也有用。
您可以使用长度,如果它为零则不检查。
var check= $('input[type=checkbox]').length;
使用is()with:勾选以获得结果为布尔值,如果复选框被选中,则为true。
var check= $('input[type=checkbox]').is(':checked');
使用'!'来获取当前 – guradio
@guradio不实际工作的对立面,因为'indeterminate'不是'checked'财产的状态。 'indeterminate'是它自己的一个属性,与'checked'无关。所以如果一个复选框是“不确定”,并不意味着'checked'是真或假。它可以是。 – vi5ion