2016-09-06 4 views
4

AngularJSが「無効」属性を持つHTMLボタンタグをクリックしないようにするにはどうすればよいですか?この場合無効なボタンのng-click = ""効果を防止する

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<button type="button" disabled ng-click="something()">No Click Please!</button>

、()何かを呼び出さないでください。

+0

disabled属性は、あなたのケースで何が起こっているのか、クリックイベントが発生することにすることはできないだろうか? –

+0

これをチェックしてくださいhttps://baudehlo.com/2014/02/24/angular-js-ng-click-still-fires-when-div-is-ngdisabled/ – GANI

+0

それは何度もこのhttp:// stackoverflowをチェックしました。 com/questions/32005918/ng-click-still-fires-when-div-is-ngdisabled – GANI

答えて

4

ngClickディレクティブで評価する必要がある式を渡します。 trueと評価されない場合、something()は呼び出されません。相続人は一例

(function() { 
 

 
    angular.module('MyApp', []) 
 
    .controller('MyController', MyController); 
 

 
    MyController.$inject = ["$scope"]; 
 

 
    function MyController($scope) { 
 

 
    $scope.disabled = true; 
 

 
    } 
 

 
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div data-ng-app="MyApp"> 
 

 
    <div data-ng-controller="MyController"> 
 

 
    <button type="button" ng-disabled="disabled" ng-click="disabled && something()">No Click Please!</button> 
 

 
    <button type="button" data-ng-click="disabled = !disabled">{{disabled ? 'Enable' : 'Disable'}}</button> 
 

 
    </div> 
 

 
</div>

$scope.disabledがtrueの場合、something()が呼び出されず、ボタンも無効になりますように、あなたもngDisabledディレクティブを使用することができます注意してください!

+0

'disabled || something() 'not' && ' –

-2

ng-disabledを使用します。

<md-button ng-disabled="true"> Disabled Button </md-button> 

EDIT ...

Fiddled

2

適切な方法は、角度およびそれを無効にするために、それを処理するために、スコープ変数を使用して、デフォルトのディレクティブである

ng-disabledを使用することですHTML:

<button ng-click="disableClick()" ng-disabled="isDisabled" ng-model="isDisabled">No Click Please!</button> 

JS:papakiaの述べたように

$scope.isDisabled = false; 
    $scope.disableClick = function() { 
     alert("Clicked!"); 
     $scope.isDisabled = true; 
     return false; 
    } 

EDIT

それが実行され得ることはありませんように、ブール変数と関数を確認してください。

DEMO APP

+2

いいえ、質問によると、** something()は呼び出されません。**これは失敗します。 – cnorthfield

+0

今日は私のために多くのdownvotes、誰かがターゲットです:) – Sajeetharan

+0

@パパキア答えはありませんが、間違いなくそれが役立ちます。あなたがそれをdownvotedした場合、コメントはありません – Sajeetharan

0

このソリューションは、いずれかのAngularJSで動作し、使用したすべてのクリックターゲットブートストラップの.disabledクラスを使用してフォームの入力および/またはその他の要素についてdisabled属性を内蔵し、それがコントローラに追加することなく動作します。

HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
<button type="button" disabled="disabled" data-ng-click="something($event)">No Click Please!</button> 

はJavaScript

function something($event) 
{ 
    var is_enabled = !angular.element($event.currentTarget).is('.disabled,:disabled'); 
    if(is_enabled) 
    { 
    } 
} 
関連する問題