如何根据所选复选框的选择启用/禁用输入文本

时间:2016-06-30 03:43:20

标签: javascript angularjs

我有这张桌子: enter image description here

我的问题是,如果我选中所选行的复选框,它会启用/禁用" Montant"输入,这是我的尝试,但它永远不会奏效 我把所有行都激活了!!

    <table>
                            <thead>
                                <tr>

                                    <th >
                                      <input type="checkbox" />
                                    </th>
                                    <th>Montant</th>
                                </tr>
                            </thead>
                            <tbody ng-model="finalOperationsList">
                                <tr ng-repeat="item in finalOperationsList track by $index ">
                                    <td class="TableHeaderalignment"><input type="checkbox" 
                                        ng-model="finalOperationsList[$index].checked" ng-change="changeMontantLBL($index)"/></td>
                                    <td class="TableHeaderalignment">
                                       <input type="text" class="form-control" value="{{item.montant}}" ng-disabled="montantBL" />
                                    </td>

                                </tr>
                            </tbody>
                        </table>

这是Controller中的功能:

 $scope.changeMontantLBL =function($index){

                      if(true){
                          $scope.montantBL = false;
                      }
                      else{
                          $scope.montantBL = true; 
                      }
                  }

那么请问我如何更正我的代码以进行输入&#34; Montant&#34;启用/禁用,具体取决于所选行复选框的选择 谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

您可以直接使用&#34; finalOperationsList[$index].checked&#34;的值在输入文本框的ng-disabled中,完全删除ng-changescope.montantBL

<tr ng-repeat="item in finalOperationsList track by $index ">
    <td class="TableHeaderalignment"><input type="checkbox" 
        ng-model="finalOperationsList[$index].checked"/></td>
    <td class="TableHeaderalignment">
       <input type="text" class="form-control" value="{{item.montant}}" ng-disabled="finalOperationsList[$index].checked" />
    </td>
</tr>

还值得注意的是,您可能误用了value="{{item.montant}}",而应使用ng-model="item.montant"。您还可以将该行的代码简化为:

<tr ng-repeat="item in finalOperationsList track by $index ">
    <td class="TableHeaderalignment">
        <input type="checkbox" ng-model="item.checked"/></td>
    <td class="TableHeaderalignment">
        <input type="text" class="form-control" ng-model="item.montant" ng-disabled="item.checked"/>
    </td>
</tr>

答案 1 :(得分:1)

您可以在ng-change方法中使用绑定的ng-model(answers [item.questID])值本身来检测它是否已被检查过。

实施例: -

<input type="checkbox" ng-model="answers[item.questID]" ng-change="stateChanged(item.questID)" /> <!-- Pass the specific id -->

$scope.stateChanged = function (qId) {
 if($scope.answers[qId]){ //If it is checked
    alert('enable or disable input');
 }

}