javascript - 如何使用 AngularJS $submitted?

标签 javascript html angularjs forms

提交时,AngularJS 在 FormController 上设置 $submitted 并将类 ng-submitted 添加到表单。很好,我可以添加

ng-disabled="myForm.$submitted || myForm.$invalid || maybeAnotherCondition"

到提交按钮,并禁用所有输入(因为在调用返回之前重新提交或编辑任何内容是没有意义的)。一旦调用返回并且输入更改后的第一个提交按钮可能应该重新启用输入...

有很多事情要做,在我开始之前,我想知道,是否已经有一些模式或者指令来做所有这些事情?我可以想象有类似的东西

FormService.manage(form, onSubmit, onSuccess, onFailure)

这三个函数中的每一个都只做特定的工作,而不是上面的样板文件。

最佳答案

如果您想一次禁用所有输入字段,我建议您使用 <fieldset> .

<form name="myForm" id="myForm" ng-submit="someHandler()">
    <fieldset form="myForm" ng-disabled="myForm.$submitted || myForm.$invalid || maybeAnotherCondition">
        <label>First Name</label>
        <input type="text" name="firstName" data-ng-model="firstName" />

        <label>Last Name</label>
        <input type="text" name="lastName" data-ng-model="lastName" />

        <button type="submit">Submit</button>
    </fieldset>
</form>

禁用 fieldset元素将禁用它的所有子输入元素。请参阅下面的工作示例:

var app = angular.module("sa", []);

app.controller("FooController", function($scope) {

  $scope.submitHandler = function() {
    alert("Form submitted");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.7/angular.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">


<div ng-app="sa" ng-controller="FooController" class="container">
  <form name="myForm" id="myForm" ng-submit="submitHandler()">
    <fieldset form="myForm" ng-disabled="myForm.$submitted">
      <div class="form-group">
        <label>First Name</label>
        <input type="text" name="firstName" data-ng-model="firstName" class="form-control" />
      </div>

      <div class="form-group">
        <label>Last Name</label>
        <input type="text" name="lastName" data-ng-model="lastName" class="form-control" />
      </div>

      <button type="submit" class="btn btn-primary">
        {{myForm.$submitted ? 'Submitted' : 'Submit'}}
      </button>
    </fieldset>
  </form>
</div>

关于javascript - 如何使用 AngularJS $submitted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37494501/

相关文章:

javascript - 为什么这个半圆不长大?

javascript - `Object.fromEntries()` 是否免受原型(prototype)污染?

javascript - 我怎么能不允许输入类型文本中的数字

html - 在同一行左右对齐元素的问题

javascript - 如何在 AngularJS/Bootstrap 中将变量传递给数据目标 data-toggle

javascript - 如何在 EXTJS 4 中向网格添加工具栏

javascript - 如何创建与API数据的链接?

javascript - 如何在数字处停止 HTML5 范围输入?

javascript - Uncaught Error : [$injector:modulerr] Failed to instantiate module polmgr due to

javascript - 避免在 FB.ui 上进行确认