为什么myForm$提交的不适用于ng消息,但适用于ng if
Why does myForm.$submitted not work with ng-messages but with ng-if?
当有按键时以及当表单提交时,我都在尝试验证我的表单。为此,我编写了以下代码:-
<form name="myForm" ng-submit="submit()" novalidate>
<input type="email" name="email" ng-model="email" required/>
<div ng-messages="myForm.$submitted">
<span ng-message="required">Please enter details in these field</span>
<span ng-message="email">Please enter email</span>
</div>
<button type="submit">Save</button>
</form>
提交功能中有一条成功消息:-
$scope.submit = function(){
console.log("Update Successful");
}
即使我没有填写必填字段并按Save,我仍然会收到"Update Successful"消息。那么,为什么验证不起作用,为什么即使验证失败,提交函数也起作用呢。
此外,我发现了这些解决方案,以这种方式做:-
<form name="myForm" ng-submit="myForm.$valid && submit()" novalidate>
<input type="email" name="email" ng-model="email" required/>
<div ng-messages="myForm.email.$error" ng-if="myForm.$submitted">
<span ng-message="required">Please enter details in these field</span>
<span ng-message="email">Please enter email</span>
</div>
<button type="submit">Save</button>
</form>
这很好,但问题是,它也应该在按键时进行验证。然而,它只在我至少汇总了一次表单后才对按键进行验证,然后按键验证就不起作用了。我应该如何解决这些问题?我也在尝试myForm$触摸,但即使这样也不起作用,当我使用它作为:-
<div ng-messages="myForm.$touched">
...
</div>
在实现AngularJS的表单验证时,您遗漏了一些东西。
从您提供的代码来看,您的表单似乎使用了默认的HTML5表单验证和NOTAngularJS表单验证。
如何
为了能够连接AngularJS表单验证(从技术上讲,将其作为属性添加到form
指令中),除了表单控件的name
属性外,还需要ng-model
属性。
同时,要禁用HTML5默认验证行为,必须在表单标记中添加novalidate
属性。
为了能够从表单中实现您的预期行为(,即按键验证和提交验证,如果我是对的),您可以实现yourForm.$dirty
和yourForm.$submitted
属性的组合:
<div ng-messages="myForm.email.$error" ng-if="myForm.$dirty || myForm.$submitted">
<p ng-message="required">Please enter details in these field</p>
<p ng-message="email">Please enter email</p>
</div>
演示
试试这个:
在html:中
<form name="myForm" novalidate>
<input type="email" name="email" required/>
<div ng-messages="myForm.email.$error" ng-if="myForm.email.$touched || valid">
...
</div>
<button ng-click="submit(myForm.$valid)">Save</button>
</form>
控制器内:
$scope.submit(valid)
{
valid ? $scope.validCheck = false : $scope.validCheck = true;
}
相关文章:
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- PHP中的setcookie仅适用于localhost
- html5 drawImage适用于firefox,而不是chrome
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- ResolveUrl是否适用于././也
- Firebase updateChildValues适用于IOS,但不适用于Web和Android
- JavaScript警报适用于int,但不适用于string
- SQLite插件适用于Mac和Windows,但不适用于手机上的Safari
- Regex Replace仅适用于Last Match
- window.onload适用于aspx页面,但不适用于普通html
- NG类适用于NG重复之外
- Angularjs ng-options 问题仅适用于 Chrome 浏览器
- 为什么myForm$提交的不适用于ng消息,但适用于ng if
- 适用于 ngRoute、ng-view 和代码复制的最佳实践
- angularjs 1.3 javascript动画适用于ng repeat,但不适用于ng if
- AngularJS中的级联表达式适用于ng-show,但不适用于ng-if
- 获取一次性绑定以适用于 ng-if
- Ng-repeat只适用于$index
- 触发ng-show只适用于ng-click事件