2017-10-09 13 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); 
    }); 
}); 

今、キーボードの「バックスペース」をクリックしてボタンを再度無効にすることはできますか?

クリックを使用して入力フィールドをクリアすると、ボタンを再び無効にするにはどうすればよいですか? $scope.appIdが空または未定義の場合、ボタンは無効になりますけれども

<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> 

答えて

5

する角度の方法に続いて、私はngDisabledディレクティブを使用することをお勧めします。 jQueryや特別なハンドラは必要ありません。

+0

はあなたのplsはplunker例とあなたの答えを説明することができます。前もって感謝します :-) –

1

このフィールドでは、キーを押したときにのみ無効をチェックします。

あなたの入力をクリアした後に無効に呼び出す必要があります:

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

しかしdhiltからの答えは、より角度のスタイルで、より明確に見えます。

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"$scope.appIdは、空の未定義またはnullであるときに、ボタンが無効になります。

単純なスニペットの例:

<!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>

関連する問題