2017-10-09 82 views
1

嗨我有一種情況下,當輸入窗體時禁用提交按鈕,只有當輸入框有一些文本時啓用它。清除文本輸入和禁用按鈕onclick Angularjs

<div id="app-id-input-container" ng-form="appIdInput"> 
    <div class="input-group"> 
     <input id="app-id-input" name="appIdInput" ng-click="clearAppIdInput()" class="form-control" type="text" ng-model="appId" pattern="^[AaIi][PpXxNn][0-9]{6}$" maxlength="8" /> 
     <span class="input-group-btn"> 
      <button id="addAppId" class="btn btn-success" ng-click="preferences.appIdInput.$valid && addAppId()" type="button">&nbsp;<span class="glyphicon glyphicon-plus"></span></button> 
     </span> 
    </div> 
    <span class="validation-alert" ng-show="appIdError">{{appIdError}}</span> 
</div> 

當用戶在輸入框內單擊時清除該字段。

$scope.clearAppIdInput = function() { 
    $scope.appId = ""; 
}; 

即使範圍爲空,該按鈕未被禁用。

這是我如何禁用按鈕。

$(document).ready(function(){ 
    $('#addAppId').prop('disabled',true); 

    $('#app-id-input').keyup(function(){ 
     $('#addAppId').prop('disabled', this.value == "" ? true : false); 
    }); 
}); 

現在,我可以通過點擊鍵盤上的「backspace」來再次禁用按鈕嗎?

僅當我使用單擊清除輸入字段時,如何禁用該按鈕?

回答

5

繼角度來說,我會建議使用ngDisabled指令:

<button ng-disabled="!appId" id="addAppId" class="btn btn-success" 
     ng-click="preferences.appIdInput.$valid && addAppId()" 
     type="button">&nbsp;<span class="glyphicon glyphicon-plus"></span> 
</button> 

但如果$scope.appId是空的或不確定的按鈕將被禁用。這不需要jQuery或任何特殊的處理程序。

+0

你能請解釋與plunker例如你的答案。提前致謝 :-) –

1

該字段僅在您按下某個鍵時檢查是否禁用。

你應該調用清除輸入後禁止使用:

$scope.clearAppIdInput = function() { 
    $scope.appId = ""; 
    $('#addAppId').prop('disabled', true); 
}; 

但是從dhilt答案是更加棱角分明的風格,看起來更加清晰。當$scope.appId爲空,未定義或爲空

0
<button id="addAppId" class="btn btn-success" ng-click="preferences.appIdInput.$valid && addAppId()" type="button">&nbsp;<span class="glyphicon glyphicon-plus" ng-disabled="!appId"></span></button> 

ng-disabled="!appId"將禁用按鈕。

簡單的片斷例如:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<script> 
 
    var app = angular.module('myApp', []); 
 
    app.controller('myCtrl', function($scope) { 
 
     $scope.appId = ""; 
 
     
 
     $scope.clearAppId = function(){ 
 
      $scope.appId = ""; 
 
     } 
 
    }); 
 
</script> 
 
</head> 
 
<body> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <button class="btn btn-default" ng-disabled="!appId">Disable This</button> 
 
    <input type="text" ng-click="clearAppId()" ng-model="appId"/> 
 
</div> 
 
</body> 
 
</html>