Angular在发送之前验证外部表单

时间:2015-06-08 09:33:08

标签: javascript angularjs ng-submit

我正在尝试在提交外部网址之前验证表单:

<form name="form" novalidate ng-submit="form.$valid && alias != ''" method="POST" action="https://sis-t.redsys.es:25443/sis/realizarPago">
    <input name="alias" ng-change="updateData(alias)" ng-model="alias" type="text" class="form-control validate" placeholder="{{ translates.alias_desc }}" required>
</form>

1 个答案:

答案 0 :(得分:0)

您可以编写自己的指令,以防止提交表单的默认行为。你可以这样做:

app.directive('formValidate', ['$timeout', function ($timeout) {
  return {
    restrict: 'A',
    scope: false,
    require: 'form',
    link: function (scope, elem, attrs, formCtrl) {
      elem.on('submit', function (event) {
        if (!formCtrl.$valid) {
          $timeout(function () {
            formCtrl.$setDirty();
            formCtrl.$setSubmitted();
          });
          event.preventDefault();
        }
      })
    }
  }
}])

注意,必须使用$timeout包装来强制调用$digest并设置$dirty$submitted个状态(如果您使用类ng-dirty和{{ 1}}用于表单验证)。

您可以像这样使用此指令:

ng-submitted

演示:http://plnkr.co/edit/1WYRRT3k4YkjodOD7ul3?p=preview