2014-07-21 32 views
0

我想用我的自定義js函數「isValid」來驗證表單。我做了這樣的事情:force ng-disabled和ng-show重新評估自定義函數

<input id="pricecondition" name="pricecondition" ng-model="user.pricecondition" ng-focus="user.pricecondition=''" required /> 

<button ng-click="submit()" ng-disabled="form.$invalid && user.isValid">submit</button> 

但似乎認爲NG-禁用電話user.isValid只有一次。

這是我的控制器的JS代碼:

$scope.user = { 
    [...], 
    lenght: "", 
    pricecondition: "", 
    isValid : function() 
    { 
     return false; 
    } 
}; 

所以當地產的長度或價格條件改變功能的isValid觸發值,但按鈕似乎並沒有重新評估user.isValid。該按鈕顯然啓用函數isValid返回false。

如何強制ng-disabled或者ng-show再次調用isVlaid()?

問候

+2

'NG-禁用= 「形式。$ &&無效user.isValid()」'嘗試加入括號user.isValid發出後,它的一個功能... – harishr

+0

感謝提示!我將括號添加到isValid(),但它仍然不適合我。我刪除了表單。$無效,現在它工作。 NG-禁用= 「!user.isValid()」。我不知道爲什麼它不像ng-disabled =「form。$ invalid &&!user.isValid()」這樣的兩個語句工作「 – Briefkasten

回答

1

您從您的評論得到了另一個問題,對不起,我沒有注意到,在第一次...... 使用表格名稱,而不是禁用按鈕標記名稱...

<form name="myform" novalidate > 
    // your html 
    <button ng-disabled="myform.$invalid">submit</button> 
</form> 

,或者你有內部形狀的形式,然後使用NG-形式

<form name="parentForm"> 
    <div ng-form="myform1"> 
     // your html 
     <button ng-disabled="myform1.$invalid">submit1</button> 
    </div> 
    <div ng-form="myform2"> 
     // your html 
     <button ng-disabled="myform2.$invalid">submit2</button> 
    </div> 
</form> 
+0

感謝您的解釋。 – Briefkasten

1

你必須有一個名稱屬性的表單元素,才能使用「的形式$無效」。 另外我會使按鈕無效,如果窗體無效或用戶無效。

<form ng-submit="submit()" name="form" novalidate > 
    <input id="pricecondition" name="pricecondition" ng-model="user.pricecondition" ng-focus="user.pricecondition=''" required /> 
    <button ng-disabled="form.$invalid || !user.isValid()">submit</button> 
</form>