Javascript 强制禁用ng和ng显示以重新评估自定义功能

Javascript 强制禁用ng和ng显示以重新评估自定义功能,javascript,angularjs,Javascript,Angularjs,我想用我的自定义js函数“isValid”验证表单。我是这样做的: <input id="pricecondition" name="pricecondition" ng-model="user.pricecondition" ng-focus="user.pricecondition=''" required /> <button ng-click="submit()" ng-disabled="form.$invalid && user.isValid"&

我想用我的自定义js函数“isValid”验证表单。我是这样做的:

<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>
因此,当属性长度或价格条件更改值时,会触发函数isValid,但按钮似乎不会重新计算user.isValid。按钮已启用。显然,函数isValid返回false

如何强制ng disabled或ng show再次调用isVlaid()


问候语

要使用“form.$invalid”,必须有一个带有name属性的表单元素。 此外,如果表单无效或用户无效,我会使按钮无效

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

提交

您的评论中有另一个问题,很抱歉,一开始我没有注意到。。。 使用formname而不是标记名禁用按钮

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

//你的html
提交
或者,如果表单中有表单,则使用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>

//你的html
提交1
//你的html
提交2

ng disabled=“form.$invalid&&user.isValid()”
考虑到user.isValid是一个函数,请尝试在其后面添加括号…谢谢提示!我在isValid()中添加了括号,但对我来说仍然不起作用。我删除了表单。$无效,现在可以使用了。ng disabled=“!user.isValid()”。我不知道为什么它不能使用两个语句,比如ng disabled=“form.$invalid&&!user.isValid()”谢谢您的解释。
<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>