javascript - 如何设置 Angular 验证以处理模糊和表单提交?

标签 javascript angularjs forms validation

Angular 验证目前通过更新模型更改来工作。尽管在 keyup 时显示这些验证错误对于 UI 来说不是很友好。

理想的解决方案是在模糊时显示错误消息,并在表单提交时显示错误消息。一旦输入第一次模糊并显示错误消息,则需要在键盘/模型更改时更新输入。

我已经看到以下允许在模糊时更新模型的内容,但这不是理想的解决方案,因为模型仅在每种情况下都在模糊时更新。

<input type="text" name="user" ng-model="user" ng-model-options="{ updateOn: 'blur' }" required>

我还遇到了以下解决方案,该解决方案在模糊方面效果很好,然后在出现错误后更改为 keyup。尽管验证不适用于表单提交。

http://plnkr.co/edit/VSPOYO16ozq2bKaLl3n9?p=preview

最佳答案

为此,您可以使用一个 Angular 范围变量来维护表单提交的状态,默认情况下该变量为false

$scope.submitted = false;

和一个作用域函数,用于验证表单提交上的字段。请记住,表单元素的地名属性必须在功能上进行相同的设置和引用。函数方法是使其通用。您也可以通过访问该输入元素的 $dirty$error 变量直接写入 html 模板。

$scope.validateInput = function (name, type) {
  var input = $scope.demoform[name];
          return (input.$dirty || $scope.submitted) && input.$error[type];
};

这是在表单提交时调用的函数。

$scope.submitForm = function () {
            $scope.submitted = true;
            if ($scope.demoform.$valid) {
                console.log('Submitted!!');
            } else {
                console.log('Not valid!!');
                return false;
            }
        };

现在在 html 模板上你可以这样写。

<form name="demoform" ng-submit="submitForm()" novalidate="">
    <input type="text" name="name" required="" ng-model="name"/>
    <span ng-show="validateInput('name', 'required')" class="text-danger">Name is required</span>
    <button type="submit" class="btn btn-info" >Save</button>
</form>

现在在表单提交上,如果字段无效,您可以看到验证消息。

Demo Plunkr of form validation on form submit in angular

关于javascript - 如何设置 Angular 验证以处理模糊和表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31487125/

相关文章:

javascript - 如何在 Ion Modal 中从调用页面获取数据

javascript - FileAPI - 将其用于房地产 Web 应用程序是个好主意吗?

javascript - AngularJS 是否具有在 div 中为属性设置别名的语法?

php - 在表单中传递多行输入并在 PHP 中迭代它们?

javascript - 从 HTML 表单调用时,来自 javascript 函数的空白警报确认框

c# - 如何将字符串添加到资源?

Javascript addEventListener onStateChange 在 IE 中不起作用

javascript - 需要帮助使用 Firebug 记录函数体

javascript - 动态内容angular js的动态显示隐藏代码

javascript - Angular 和警报 : Multiple confirms with $index id's