【问题标题】:AngularJS validations not working?AngularJS 验证不起作用?
【发布时间】:2015-01-15 07:46:15
【问题描述】:

我是 AngularJS 的新手,我刚开始调整它附带的验证,但由于某种原因我无法让它们工作:

<div class="row">
    <div class="col-xs-6">
        <h2>Login</h2>
        <p class="text-danger">{{message}}</p>
        <form name="form" novalidate>
            <label>Email: </label>
            <input type="email" ng-model="credentials.email" placeholder="Email" class="form-control" required />
            <label>Password: </label>
            <input type="password" ng-model="credentials.password" placeholder="Password" class="form-control" />
            <br />
            <button class="btn btn-primary" ng-click="authenticate(credentials)">Login</button>
            <a href="#/register">Register</a>
        </form>
    </div>
</div>

我命名了表格并把novalidate也放了。然后我尝试根据需要输入电子邮件,但将属性放在那里。但是表单仍然提交,AngularJS 不会阻止它提交或显示任何警告。我错过了什么?

【问题讨论】:

  • 根据表单有效性启用/禁用按钮。

标签: javascript angularjs validation


【解决方案1】:

为您的输入提供名称字段

 <form name="form" novalidate>
            <label>Email: </label>
            <input type="email" name="email" ng-model="credentials.email" placeholder="Email" class="form-control" required />
            <label>Password: </label>
            <input type="password" ng-model="credentials.password" placeholder="Password" class="form-control" />
            <br />
            <button class="btn btn-primary" ng-disabled="form.$invalid" ng-click="authenticate(credentials)">Login</button>
            <a href="#/register">Register</a>
        </form>

这里是 plunker :-) http://plnkr.co/edit/pAA2wBp8zgIZV6QLwO7S?p=preview

【讨论】:

  • 所以 Angular 不会自动显示警告?它只是推送 ng-invalid、ng-pristine、ng-dirty 等类。我认为它的工作方式类似于引导程序?
  • 是的,你必须自己验证它,它只会抛出错误:-)
【解决方案2】:

如果您想设为可选,请从电子邮件输入中删除 required 属性。

<input type="email" ng-model="credentials.email" placeholder="Email" class="form-control"/>

如果您想删除电子邮件验证,请更改字段类型。

如果您发送type="email",HTML5 始终会验证电子邮件

<input type="text" ng-model="credentials.email" placeholder="Email" class="form-control"/>

【讨论】:

  • 还是不行。那甚至没有意义?我也尝试在密码处插入 required 。还是什么都没有。
  • 更新了答案。请检查
猜你喜欢
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多