2014-07-21 31 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>