Der*_*rek 32 javascript validation twitter-bootstrap angularjs
HTML:
<div class="form-group"
ng-class="{ 'has-error' : form.firstName.$invalid && form.firstName.$touched }">
<label for="firstName"
class="control-label">
First Name
</label>
<input type="text"
name="firstName"
id="firstName"
ng-model="editableUser.firstName"
class="form-control"
required>
<span class="help-block"
ng-show="form.firstName.$error.required && form.firstName.$touched">
First Name is required
</span>
</div>
<input type="submit"
ng-click="submit()"
value="Submit"
class="btn btn-default">
Run Code Online (Sandbox Code Playgroud)
当用户点击提交时,我正试图让我的'has-error'类启动无效字段.
我认为你可以这样做:
$scope.submit = function () {
if ($scope.form.$invalid) {
angular.forEach($scope.form.$invalid, function(field) {
field.$setTouched();
});
alert("Form is invalid.");
}
};
Run Code Online (Sandbox Code Playgroud)
但https://docs.angularjs.org/api/ng/type/form.FormController中没有$setTouched
方法
编辑: Realize $setTouched
确实存在,它位于https://docs.angularjs.org/api/ng/type/ngModel.NgModelController
Ale*_*nov 53
if ($scope.form.$invalid) {
angular.forEach($scope.form.$error, function (field) {
angular.forEach(field, function(errorField){
errorField.$setTouched();
})
});
alert("Form is invalid.");
}
Run Code Online (Sandbox Code Playgroud)
plunker:http://plnkr.co/edit/XmvoTkIQ0yvFukrVSz11
hen*_*eee 16
试试最近添加的$ submit
<input type="text"
name="firstName"
id="firstName"
ng-model="editableUser.firstName"
class="form-control"
required>
<span class="help-block"
ng-show="form.firstName.$error.required && (form.firstName.$touched || form.$submitted">
First Name is required
Run Code Online (Sandbox Code Playgroud)
扩展Alexey的答案,你可以向FormController添加新的方法来执行相同的操作,因此不需要将代码从一个提交函数复制到另一个提交函数:
// config.js
export default function config($provide) {
$provide.decorator('formDirective', $delegate => {
const fn = $delegate[0].controller.prototype
if (!('$setTouched' in fn)) fn.$setTouched = function() {
if (this.$invalid) {
Object.values(this.$error).forEach(controls => {
controls.forEach(control => control.$setTouched())
})
}
}
return $delegate
})
}
Run Code Online (Sandbox Code Playgroud)
// controller.js
$scope.submit = function () {
if ($scope.form.$invalid) {
$scope.form.$setTouched();
alert("Form is invalid.");
}
};
Run Code Online (Sandbox Code Playgroud)
如果有人想知道为什么有人想要进行这种验证:缺少iOS约束验证,因此ng-submit
即使在无效表单上也会调用.
归档时间: |
|
查看次数: |
34213 次 |
最近记录: |