如果在ng-repeat中选中了特定复选框,angularjs将禁用其他复选框

时间:2016-04-19 14:25:36

标签: javascript jquery angularjs checkbox

我想解释一下我的问题。

我有一个使用ng-repeat显示的复选框列表,如果我选中了一个特定的复选框,则必须禁用其他复选框。

<label ng-repeat="specific in specifications">
       <input id="specifications_chk" value="{{specific}}" ng-model="newObject[specific]" type="checkbox">
       {{specific}}
</label>

复选框值来自json文件。

image

如果我检查IndepthHomeCleaning,我需要禁用其他人。多数民众赞成

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,有些方法比其他方法更好但是使用你提供的方法可能有所帮助:

<label ng-repeat="specific in specifications">
   <input id="specifications_chk" value="{{specific}}" ng-model="newObject[specific]" type="checkbox" ng-disable="newObject.IndepthHomeCleaning">
   {{specific}}
</label>

当然这不是动态的。但是,如果您需要它始终是第一个规范,则可以在ng-disabled中使用此表达式:

ng-disable="newObject[specifications[0]]"

这是一个JS Fiddle示例,如果选中第一个复选框,则禁用除第一个复选框以外的所有复选框:

https://jsfiddle.net/mLj5Lpwz/

我希望这会有所帮助。

<强>更新

根据您的评论,听起来这需要更具活力。您需要在对象中的某处捕获此数据。

我创建了另一个将$scope.specifications作为对象数组的示例。这些对象包含一个ExcludedBy属性,其他规范将导致该规范被禁用。

很难解释,但我希望这个更新的例子可以帮助您实现所需:

https://jsfiddle.net/mLj5Lpwz/3/

答案 1 :(得分:0)

Here is the solution to your problem

https://jsfiddle.net/anshulbisht06/mLj5Lpwz/2/