在angularjs中禁用整个div

use*_*365 35 angularjs

有没有办法在angularjs中禁用整个div标签.我有一个div标签,里面包含几个表单字段,我只想用一个条件禁用它们.这可能吗?下面是我的代码.我尝试使用但它没有用.任何的意见都将会有帮助.谢谢,请看下面的代码.我有包含表单的主div标签.我想根据条件禁用表单,因此用户无法输入id和name文本字段.

<div>
<form name="form" role="form" novalidate
class="ng-scope ng-invalid ng-invalid-required ng-dirty ng-valid-minlength"
ng-submit="createStudy()">



<div class="form-group">
    <label>ID</label> <input type="text" class="form-control"
        name="id" ng-model="study.id">
</div>

<div class="form-group">
    <label>Name</label> <input type="text" class="form-control"
        name="name" ng-model="study.name" ng-minlength=1
        ng-maxlength=50 ng-required="true">
</div>



<div class="modal-footer">
   <a href="#/studies"><button type="button" class="btn btn-default"
        data-dismiss="modal" ng-click="clear()">
        <span class="glyphicon glyphicon-ban-circle"></span> Cancel
    </button></a>
    <button type="submit" ng-disabled="form.$invalid"
        class="btn btn-primary">
        <span class="glyphicon glyphicon-save"></span> Save
    </button>
</div>

</form>
</div>
Run Code Online (Sandbox Code Playgroud)

小智 57

您可以使用'fieldset'而不是'div',如果向其中添加ng-disabled,它将禁用其中的所有表单元素.如下请见 :

<fieldset ng-disabled="true"> 
<label>ID</label> <input type="text" class="form-control"
        name="id" ng-model="study.id">
<label>Name</label> <input type="text" class="form-control"
        name="name" ng-model="study.name" ng-minlength=1
        ng-maxlength=50 ng-required="true">
</fieldset>
Run Code Online (Sandbox Code Playgroud)


her*_*ing 16

您可以编辑css/less来禁用禁用div中的所有元素.

例如:

在html中设置.disabled-class:

<div ng-disabled="disableExpression" 
     ng-class="{'disabled': disableExpression}"
>
  <!-- content -->
</div>
Run Code Online (Sandbox Code Playgroud)

设置你的残疾人div:

.disabled{
  opacity: 0.5;
  pointer-events: none;

  > * {
    opacity: 0.5;
    pointer-events: none;
  }
}
Run Code Online (Sandbox Code Playgroud)


Jay*_*ena 6

您可以轻松地为此创建自己的指令,这将禁用元素内的所有输入(在您的情况下为表单);

yourModule.directive('disableForm',function(){

    return{
       scope:{
         disableForm:'=' 
       }
       link:function(scope, element ){
         if(scope.disableForm){
          angular.element('input',element).attr('disabled','disabled') ;
         }
       }
     }
    });
Run Code Online (Sandbox Code Playgroud)

在HTML中,

<form name="form" role="form" novalidate disable-form="condition" ...
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但这个解决方案不起作用. (2认同)

小智 6

在主要<div>你写:

<div ng-class="{'my-disable':condition}">
Run Code Online (Sandbox Code Playgroud)

在css文件中:

.my-disable{
    pointer-events:none;
}
Run Code Online (Sandbox Code Playgroud)