Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果在Angular JS中未选中复选框,则禁用按钮_Javascript_Angularjs - Fatal编程技术网

Javascript 如果在Angular JS中未选中复选框,则禁用按钮

Javascript 如果在Angular JS中未选中复选框,则禁用按钮,javascript,angularjs,Javascript,Angularjs,所以我正在开发这个web应用程序。我有一个类别列表,如果列表中的项目没有被选中,“保存”和“发布”按钮将被禁用。我理解ng disabled=!(ng model name)可以做到这一点,但每次我加载页面时,按钮都会被禁用,但当我选中列表中的某个项目时,按钮不会被启用 <a ng-if="status() < 2" href="#" data-ng-click="publish(true)" class="btn btn-sm btn-block btn-success" ng-d

所以我正在开发这个web应用程序。我有一个类别列表,如果列表中的项目没有被选中,“保存”和“发布”按钮将被禁用。我理解
ng disabled=!(ng model name)
可以做到这一点,但每次我加载页面时,按钮都会被禁用,但当我选中列表中的某个项目时,按钮不会被启用

<a ng-if="status() < 2" href="#" data-ng-click="publish(true)" class="btn btn-sm btn-block btn-success" ng-disabled="!cat.IsSelected">{{lbl.publish}}</a>
<a ng-if="status() == 2" href="#" data-ng-click="save()" class="btn btn-sm btn-block btn-primary" id="check_box" ng-disabled="!cat.IsSelected">
{{lbl.save}}
</a>                       
<span ng-if="status() < 2">
   <a href="#" ng-click="save()" class="btn btn-sm btn-block btn-primary"   id="check_box" ng-disabled="!cat.IsSelected">
    {{lbl.save}}
   </a>
</span>

<ul class="categories-list">
    <li ng-repeat="cat in lookups.CategoryList">
      <label><input type="checkbox" id="cat-{{cat.OptionValue}}" data-ng-model="cat.IsSelected"/> {{cat.OptionName}}</label>
    </li>
    <li ng-if="lookups.CategoryList.length == 0" class="item-empty">{{lbl.empty}}</li>
</ul>

  • {{cat.OptionName}}
  • {{lbl.empty}
JS代码:

$scope.post.Categories = [];
if ($scope.lookups.CategoryList != null) {
    for (var i = 0; i < $scope.lookups.CategoryList.length; i++) {
        var cat = $scope.lookups.CategoryList[i];
        if (cat.IsSelected) {
            var catAdd = { "IsChecked": false, "Id": cat.OptionValue, "Title": cat.OptionName };
            $scope.post.Categories.push(catAdd);
        }
    }
}
$scope.post.Categories=[];
if($scope.lookups.CategoryList!=null){
对于(变量i=0;i<$scope.lookups.CategoryList.length;i++){
var cat=$scope.lookups.CategoryList[i];
如果(类别为选定){
var catAdd={“IsChecked”:false,“Id”:cat.OptionValue,“Title”:cat.OptionName};
$scope.post.Categories.push(catAdd);
}
}
}

更新:使小提琴更像实际场景

包装您的


ng disabled
disable
属性)在锚定标记上不起作用。您没有真正“禁用”一个
元素。也许
save()
中的逻辑可以检查您的情况,而只是不执行其逻辑?@gbade_uu我添加了一个小提琴和代码。看看这是否适用于您。嗨@Daniel,我甚至修改了jsfiddler中的代码,添加了一个复选框。它在jsFiddler中工作。挑战在于将该代码与复选框项目列表一起使用。该按钮保持禁用状态,但在选中或取消选中时不会发生任何事情如果在超时时将其包装,会发生什么?此外,您的所有类别是否都有一个“保存”按钮,或者每个类别都有自己的“保存”按钮?是的,有一个“保存”按钮。保存按钮会选择所选项目,并将其添加到对象数组中。复选框列表应该确保用户在保存前选择了一个项目。就是这样做的。再一次谢谢
<div ng-app="test" ng-controller="myController">
  <button ng-click="save()" ng-disabled="!hasSelectedAnItem" class="btn btn-sm btn-block btn-primary">
    Save
  </button>
  <ul class="categories-list">
      <li ng-repeat="cat in items">
          <label><input type="checkbox" id="cat-{{cat.OptionValue}}" ng-model="cat.IsSelected" ng-change="canBeSaved()"/> {{cat.OptionName}}</label>
      </li>
  </ul>
</div>
angular.module('test', [])

.controller('myController', ['$scope', function($scope) {
    $scope.hasSelectedAnItem = false;

   $scope.items = [
        {OptionValue: 123, OptionName: "Adam", IsSelected: true},
      {OptionValue: 234, OptionName: "Paul", IsSelected: false},
            {OptionValue: 345, OptionName: "Jason", IsSelected: true},          
      {OptionValue: 464, OptionName: "Joe", IsSelected: false}
   ];

   $scope.canBeSaved = function() {

      var found = false;
        $scope.items.forEach(function(item) {
        if (item.IsSelected) {
            alert("Here");
            found = true; 
        }
      });

      $scope.hasSelectedAnItem = found;
   }

   $scope.save = function() {
        alert($scope.cat.IsSelected);
   }

   $scope.canBeSaved();
}]);