如何在表单活动验证状态下仅在提交时验证角度形式

时间:2017-01-05 07:18:01

标签: javascript angularjs forms validation

我有一个表单,我只需要提交表单,我使用以下角点synatax成功验证了

form1.inputvalue.$invalid && form1.$submitted

现在,一旦显示错误,它就会在实时输入(或键盘)更改时开始验证值。我的客户不想在密钥上验证它。并且在更改输入时应该隐藏消息,并且应该在第二次单击提交按钮时再次验证。听起来很奇怪但需要:)。

我在ng-change of input上尝试了ng-hide =“true”。但它不会在控制台中触发。你可以帮助我在哪里找不到

$scope.hidevalidate = function(){
		console.log("coming to hide");
		$scope.hidevalidation = true;
		console.log("hidden");
	};
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form name="frmdata" novalidate>
<input type="text" 
       class="class1"  
       name="item1" 
       ng-model="frmdata.item1" 
       id="item" 
       ng-change="hidevalidate()"
       ng-blur="focusout('item1');"
       ng-disabled="disableItem1"
       ng-pattern="/^([0-9]{1,25})?$/"
       ng-model-options="{allowInvalid: true}">
  </input>
<div ng-show="frmdata.item1.$invalid && form1.$submitted" >
<div ng-hide="hidevalidation" class="error-message">Item should not be empty (or) only numbers allowed</div>
</div>
</form>

2 个答案:

答案 0 :(得分:0)

您可以使用form1.$setPristine()标记表单,因为它是全新的,所以理论上它应该就像您第一次来到页面一样(所以如果您的逻辑第一次正确处理这个问题,它应该在此之后)。

请参阅https://docs.angularjs.org/api/ng/type/form.FormController

答案 1 :(得分:0)

您可以在单击执行所有检查的提交按钮时调用方法,并将属性novalidate添加到表单中,这样它就不会检查任何内容,因为此方法会检查所有内容并设置所有错误(如果有的话) )。