2

ngsSubmit を持つフォームを作成しようとしています。Enter を押して送信ボタンをクリックすると、期待どおりに機能します (ng-submit に提供したメソッドを呼び出すだけです)。

ただし、場合によっては、実際に送信する前に前処理を行いたい場合もあるため、JQuery の submit() を使用してプログラムで送信をトリガーしてみました。

これにより、ng-submit ハンドラーが起動し、さらに通常どおりページ全体を更新するフォームも送信されます。

これを回避する方法、またはなぜそれが起こるのか?

ここに例を示します (「クリックしてください」は悪い動作を示しています) http://jsfiddle.net/Yf5tf/

<form ng-app="myApp" ng-submit="submitMe()" ng-controller="myCtrl">
    <input type="text" ng-model="value"></input>
    <input type="submit" value="Go!"></input>
    <div ng-click="progSubmit()">click me</div>
</form>

angular.module('myApp', [])
.controller('myCtrl', function($scope, $element, $timeout) {
    $scope.submitMe = function() { alert ("hi"); };
    $scope.progSubmit = function() {
        $timeout(function() {
            var inputElem =  $element.find("input");
            angular.element(inputElem[0].form).submit();
          }, 0);
    };
});

ありがとう、ヤロン

4

1 に答える 1