0

外部 URL に送信する前にフォームを検証しようとしています:

<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>
4

1 に答える 1

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$submittedng-dirtyng-submitted

このディレクティブを次のように使用できた後:

<form name="form" novalidate form-validate 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>
      <button type="submit">Submit</button>
</form>

デモ: http://plnkr.co/edit/1WYRRT3k4YkjodOD7ul3?p=preview

于 2015-06-08T12:41:47.850 に答える