有没有办法让一个复选框只有在输入数据时才被标记?
问题描述:
我有一个ng-repeater,每行有一个输入类型复选框,以及3个文本字段。我想只允许用户在3个文本字段中的每一个中输入一些文本时选中该复选框。如果用户尝试选择复选框而不先输入数据,我想显示一条警告消息。有没有办法让一个复选框只有在输入数据时才被标记?
我假设我必须做一些检查三个ng模型(对于文本字段)是null或undefined或者什么的,但不知道如何在HTML中做到这一点。
我的HTML看起来是这样的:
<div ng-repeat="o in objects">
<input type="checkbox" class="myClass" ng-click="doSomething(argument)>
....
....
<input ng-model="model1">
<input ng-model="model2">
<input ng-model="model3">
编辑:在这里找到AngularJS - Form Custom Validation - Check if at least one input is empty
答
答案您可以禁用它们,并使用ng-change
来监视的文本输入的所有3才有价值。
样本HTML:
<input type="text" ng-model="data.item3" ng-change="update()"/>
<input type="checkbox" ng-model="data.model1" ng-disabled="checksDisabled"/>
示例控制器
.controller('MainCtrl',function($scope){
$scope.checksDisabled=true;
var data = $scope.data ={ };
$scope.update=function(){
$scope.checksDisabled = !(data.item1 && data.item2 && data.item3);
}
});
感谢您的回答,我决定去与我贴在我的编辑路线,因为它的更少的代码,但如果出现问题,我可以使用它作为备份:)。 – gallly 2014-11-03 23:38:02
明白,我个人更喜欢在HTML中少废话,也更容易测试变量 – charlietfl 2014-11-03 23:38:46
是啊,你可能是正确的,是在做更多的税收检查或在这种情况下,这是没有问题?正在检查从ng禁用的checksDisable更有效吗?或者只是更清洁 – gallly 2014-11-03 23:42:30