javascript - 尽管验证错误仍提交 Angular 表单

标签 javascript forms angularjs validation

我用 Angular.js 编写了一个表单,需要在提交之前填写一个字段。验证工作正常(当我提交表单时,该字段显示验证错误),但表单似乎仍然执行其 ng-click 操作。

尽管存在验证错误, Angular 表单是否仍应提交?如果存在验证错误,阻止其提交的最佳方法是什么?

这是有问题的表格:

<form role="form">
    <div class="form-group">
        <label>Book Id</label><br> 
        <input ng-model="bookToSend.bookId" class="form-control" maxlength="40" required type="text">
    </div>
    <button type="submit" ng-click="sendBookUpdate(BookToSend)">Send Book Update</button>
</form>

最佳答案

出现验证错误时,Angular 不会阻止表单提交。

实际上,使用您粘贴的代码片段,会显示错误只是因为默认情况下 html5 提供了错误验证。

您应该检查文档:https://docs.angularjs.org/guide/forms

基本上你必须命名你的表单:

<form name="myForm" role="form">

然后您可以使用以下方法阻止表单在 Controller 内提交:

$scope.sendBookUpdate(BookToSend, form) {
  if (form.$invalid) {
    return; // and add any error to the view if you want
  }

  ...
}

另一个选项是阻止从 View 提交:

<form name="myForm" role="form" ng-submit="myForm.$valid && sendBookUpdate(BookToSend)">

关于javascript - 尽管验证错误仍提交 Angular 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24497433/

相关文章:

angularjs - 导入Highcharts和highcharts-more(AngularJS 1.5 + TypeScript + webpack)

javascript - 如何在数据表中显示 5 行而不是默认的 10 行?

javascript - bool 对象上的逻辑 NOT 在 Javascript 中总是返回 false

forms - 编辑对象时如何选择多个symfony复选框

ajax - 使用 jquery 使用 $.post() 触发下载和 .click 事件的 href 链接

forms - MsAccess 表单 - 最初为空记录,但一旦数据输入开始,就需要强制填写

javascript - 如何在 AngularJS 中将消息从一个 Controller 发送到另一个 Controller ?

javascript - 带有 knockout js的递归模板

javascript - try/catch block 未捕获异步/等待错误

javascript - 向后台发送数据