フォーム送信のデフォルトの動作を防止する独自のディレクティブを作成できます。次のように実行できます。
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
ng-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>