2016-05-17 65 views
1

我的要求禁用是:NG-disabled,則無法在Chrome .Button工作是不是在角

  1. 提交按鈕應禁用之前驗證所有字段。
  2. 所有字段驗證完成後,提交按鈕應由用戶啓用點擊。
  3. 一旦用戶點擊按鈕,再次提交按鈕應該被禁用。

我用下面的代碼:

<button type="submit" class="btn" data-ng-disabled="signup.$invalid" ng-disabled="isDisabled" data-ng-click="saveNewUser()">Submit</button> 

,並在控制器我用

$scope.saveNewUser = function() 
        $scope.isDisabled = true; 

如果有任何字段不進行驗證和錯誤出

if(genderError || stateError || dobError) 
        $scope.isDisabled = false; 

上述情況下工作在IE和Firefox中很好,但它在Chrome中不起作用。
我在Chrome中打開了表單,在IE和Firefox中顯示禁用按鈕時,按鈕未顯示禁用,即使Form尚未提交。

謝謝。

+0

能否請您提供一個小提琴或工作例如你反應遲鈍的代碼? – Fizzix

+0

另外,你不應該引用兩個'ng-disabled'屬性,比如你正在做'data-ng-disabled =「註冊。$ invalid」ng-disabled =「isDisabled」'。相反,只要執行'ng-disabled =「註冊。$ invalid || isDisabled」' – Fizzix

回答

0

我已經設置了一個使用Codepen的基本示例,並讓它在Mac上的Firefox,Safari和Chrome上運行。

控制器:

var app = angular.module('app', []); 
app.controller('myctrl', ['$scope', function($scope){ 
    var genderError = false; 
    var stateError = false; 
    var dobError = false; 

    $scope.saveNewUser = function() { 
    $scope.isDisabled = true; 

    if(genderError || stateError || dobError) { 
     $scope.isDisabled = false; 
    } 
    } 
}]); 

HTML:

<form name="signup"> 
    <button type="submit" class="btn" ng-disabled="signup.$invalid || isDisabled" ng-click="saveNewUser()">Submit</button> 
</form> 

我相信你的錯誤是最有可能引用你的按鈕都data-ng-disabledng-disabled。瀏覽器可以用不同的方式解釋這一點。相反,我將它們按鈕合併爲一個屬性,如ng-disabled="signup.$invalid || isDisabled"

WORKING EXAMPLE

+0

真棒!非常感謝你..它的工作。 – Pankaj