我正在寻找完全像这些的东西(带有“父母”的三态复选框)。但是使用该解决方案并不好用,因为我现在不依赖jQuery,因此我需要调用$
scope。$ apply来使模型识别自动(未选中)的复选框单击的jQuery。
这是angular.js的错误,要求执行ng-
indeterminate-value。但这仍然不能使我同步到所有孩子,这是我认为不应该成为我的控制器的一部分的事情。
我正在寻找的是这样的:
<input type="checkbox" ng-children-model="child.isSelected for child in listelements">
。布尔值列表将被计算,如果选择0->复选框为false。如果全部选中->复选框为true。否则->复选框不确定。$scope.listelements = [{isSelected: true, desc: "Donkey"},{isSelected: false, desc: "Horse"}]
<tr ng-repeat="elem in listelements"><td><input type="checkbox" ng-model="elem.isSelected"></td><td>{{elem.desc}}</td></tr>
。由于您需要一种新的类型/类型的组件,因此这对于自定义指令来说是一个很好的案例。
由于父/主/三态复选框和各个双状态复选框需要相互交互,因此我建议使用带有其自己的控制器的单个指令来处理逻辑。
<tri-state-checkbox checkboxes="listelements"></tri-state-checkbox>
指示:
app.directive('triStateCheckbox', function() {
return {
replace: true,
restrict: 'E',
scope: { checkboxes: '=' },
template: '<div><input type="checkbox" ng-model="master" ng-change="masterChange()">'
+ '<div ng-repeat="cb in checkboxes">'
+ '<input type="checkbox" ng-model="cb.isSelected" ng-change="cbChange()">{{cb.desc}}'
+ '</div>'
+ '</div>',
controller: function($scope, $element) {
$scope.masterChange = function() {
if($scope.master) {
angular.forEach($scope.checkboxes, function(cb, index){
cb.isSelected = true;
});
} else {
angular.forEach($scope.checkboxes, function(cb, index){
cb.isSelected = false;
});
}
};
var masterCb = $element.children()[0];
$scope.cbChange = function() {
var allSet = true, allClear = true;
angular.forEach($scope.checkboxes, function(cb, index){
if(cb.isSelected) {
allClear = false;
} else {
allSet = false;
}
});
if(allSet) {
$scope.master = true;
masterCb.indeterminate = false;
}
else if(allClear) {
$scope.master = false;
masterCb.indeterminate = false;
}
else {
$scope.master = false;
masterCb.indeterminate = true;
}
};
$scope.cbChange(); // initialize
},
};
});
更改模板以满足您的需要,或者将外部模板与templateUrl一起使用。
该指令假定checkboxes数组包含具有isSelected
属性和desc
属性的对象。
柱塞。
更新
:如果您只希望该指令仅呈现三态复选框,因此单个复选框位于HTML中(例如@Piran的解决方案),这是该方法的另一个更小巧的变体。对于这个笨拙的人,HTML将是:
<tri-state-checkbox checkboxes="listelements" class="select-all-cb">
</tri-state-checkbox>select all
<div ng-repeat="item in listelements">
<input type="checkbox" ng-model="item.isSelected"> {{item.desc}}
</div>
我有一个超文本标记语言选择框,在我的jsp中启用了多选择。我从其他按钮动态填充选项。因此,用户不会从该选择框中选择任何值。我必须将selectbox的所有值传递给其他jsp。 我正在使用表单操作提交浏览jsp。这样做时,我无法获得所有的选择框值。 此选项仅提供该多选框中的选定值。我想要的是从selectbox中获取所有值,无论是否选中。 谢谢
问题内容: 我有一个带有属性的元素。如何使用JavaScript获取此元素的选定值? 这是我正在尝试的: 问题答案: 没有jQuery: 快速示例:
问题内容: 我正在尝试选中一个复选框的所有复选框。但是该怎么做呢? 这是我的HTML: 我创建了一个额外的复选框以选择并取消选择所有复选框。 JS: 我也尝试过,但是没有一个对我有用:( 问题答案: 您错过了容器的div 和和。 是正确的变体。 https://jsfiddle.net/0vb4gapj/1/
问题内容: 我有一组具有相同名称的输入复选框,并且我想确定已使用JavaScript选中了哪些复选框,如何实现呢?我只知道如何获取所有复选框,如下所示: 问题答案: 一个简单的for循环,用于测试属性并将选中的属性附加到单独的数组中。从那里,如果需要,您可以进一步处理数组。
如问题所述,当选中标题中的“全选”复选框时,我已经可以选中gridview行中的复选框,当取消选中标题中的“全选”复选框时,取消选中gridview行中的复选框。我想做的是,当没有选中行中的所有复选框时,则不选中标题中的“全选”复选框,反之亦然(当选中行中的所有复选框时,则选中标题中的“全选”复选框)。 我该怎么做? 我已经做了我想要实现的,但是标题中的复选框开始影响(选中或取消选中),即使我只选
本文向大家介绍jQuery实现复选框全选/取消全选/反选及获得选择的值,包括了jQuery实现复选框全选/取消全选/反选及获得选择的值的使用技巧和注意事项,需要的朋友参考一下