2016-04-08 57 views
1

我試圖創建一個讀取輸入值並觸發一系列true/false的函數,但下面的代碼一直返回「passStrength未定義」。 從我能找到的,oninput不支持Angular。在Angular中如何實現這一點?oninput在Angular中不起作用。另類?

在我的控制器:

$scope.passStrength = function(input) { 
    if (input.value.toLowerCase().indexOf(/[a-z]/) > -1) { 
     $scope.lwrChar = true; 
     console.log('lower ' + $scope.lwrChar); 
    } else if (input.value.toUpperCase().indexOf(/[A-Z]/) > -1) { 
     $scope.uprChar = true; 
     console.log('upper ' + $scope.uprChar); 
    } else if (input.value.indexOf() == !isNaN(n)) { 
     $scope.nbrChar = true; 
     console.log('number ' + $scope.nbrChar); 
    } else if (input.value.length >= 8) { 
     $scope.countChar = true; 
     console.log('count ' + $scope.countChar); 
    } 
}; 

,並在我的標記:

<input id="password" oninput="passStrength()" /> 
+1

答案就在你的標籤:NG-變化。 https://docs.angularjs.org/api/ng/directive/ngChange。 –

回答

3

觸發事件時,輸入的變化,採用NG-變化。另外,你必須定義一個ng模型。

<input ng-model="password" ng-change="passStrength(password)" /> 

編輯: 創建一個plunker證明它

+0

謝謝,但我怎麼參考控制器中的模型?用$ scope.password替換輸入並不能解決問題。我從輸入函數獲取一個未定義的錯誤。 –

+0

看看這個[Plunker](http://plnkr.co/edit/ybvmeYDwvNAv4W5QeNum?p=preview)。 – tpsilva

+0

謝謝!我採取了一個稍微不同的路徑,但基本上相同! –