2013-07-01 9 views
37

Sto usando questo campo per una visione di modifica e un CREATE VIEWCome disattivare una casella di input usando angular.js

<input data-ng-model="userInf.username" class="span12 editEmail" type="text" placeholder="[email protected]" pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}" required /> 

nel controller ho questo codice per disattivare l'elemento di input:

function($rootScope, $scope, $location, userService) 
{ 

//etc 
    $(".editEmail").attr("disabled", disable); // no idea how to do in angular 
} 

Per favore aiuto.

+5

è necessario utilizzare [ng-disabled] (http://docs.angularjs.org/api/ng.directive:ngDisabled) –

+0

@maqjav La domanda dichiara esplicitamente che la soluzione deve essere fornita in termini AngularJS, non jQuery . – Stewie

+0

@Stewie hai ragione. Cancellare il commento;) – maqjav

risposta

11

è necessario utilizzare ng-disabled direttiva

<input data-ng-model="userInf.username" 
     class="span12 editEmail" 
     type="text" 
     placeholder="[email protected]" 
     pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}" 
     required 
     ng-disabled="<expression to disable>" /> 
+3

questo è vecchio, ma tu eri il primo e hai la stessa risposta esatta Non capisco tutti i voti sull'altra risposta –

5

ho creato una direttiva per questo (angolare stabile 1.0.8)

<input type="text" input-disabled="editableInput" /> 
<button ng-click="editableInput = !editableInput">enable/disable</button> 

app.controller("myController", function(){ 
    $scope.editableInput = false; 
}); 

app.directive("inputDisabled", function(){ 
    return function(scope, element, attrs){ 
    scope.$watch(attrs.inputDisabled, function(val){ 
     if(val) 
     element.removeAttr("disabled"); 
     else 
     element.attr("disabled", "disabled"); 
    }); 
    } 
}); 
+1

Devo usare angular 1.0.8 che non ha ng- direttiva disabilitata, quindi è stato utile! –

0
<input type="text" input-disabled="editableInput" /> 
<button ng-click="editableInput = !editableInput">enable/disable</button> 

app.controller("myController", function(){ 
    $scope.editableInput = false; 
}); 

app.directive("inputDisabled", function(){ 
    return function(scope, element, attrs){ 
    scope.$watch(attrs.inputDisabled, function(val){ 
     if(val) 
     element.removeAttr("disabled"); 
     else 
     element.attr("disabled", "disabled"); 
    }); 
    } 
}); 
+2

Un po 'di spiegazione sarebbe utile. – ouflak

0
<input data-ng-model="userInf.username" class="span12 editEmail" type="text" placeholder="[email protected]" pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}" required ng-disabled="true"/> 
+0

Un po 'di spiegazione sarebbe utile. –

1

Il tuo markup deve contenere un attributo aggiuntivo chiamato ng-disabled il cui valore deve essere una condizione o un'espressione che potrebbe essere true o false.

<input data-ng-model="userInf.username" class="span12 editEmail" 
     type="text" placeholder="[email protected]" 
     pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}" 
     required 
     ng-disabled="{condition or expression}" 
/> 

E nel regolatore si può avere un codice che possa modificare il valore della direttiva ng-disabled.

Problemi correlati