为什么表单。$有效检查非必填字段的有效性?

时间:2015-07-30 23:55:12

标签: angularjs forms validation

在我的AngularJS表单中,我有一些需要的字段和一个不是的字段。如果表单无效,我想阻止提交表单,但是当我检查form.$valid时,它总是返回false,除非我为一个非必填字段(以及所有其他字段)提供有效输入。有没有办法让form.$valid仅对必填字段返回true?

更多细节:

<form novalidate name="contactForm" data-ng-submit="submit(contactForm)">
    <input type="text" data-ng-model="f_name" name="name" required>
    <input type="email" data-ng-model="f_email" name="email" required>
    <input type="url" data-ng-model="f_url" name="url">
    <input type="submit">
</form>

我的控制器:

app.controller('formController', function($scope){
    // Defaults
    $.extend( $scope, {
        f_name: 'NAME',
        f_email: 'EMAIL',
        f_url: 'URL',
        submit: function(form){
            alert(form.$valid); // Returns false even with valid name and email
        }
    });
});

1 个答案:

答案 0 :(得分:0)

如果一个字段有数据 - 它将被验证。

“要求”仅用于确保该字段不为空。

想象一下,您有一个电子邮件输入,并且用户输入了无效的地址。您必须对其进行验证,否则您将在代码中使用无效地址。

如果要跳过特定的字段验证,可能需要在控制器中编写一个方法来执行此操作。