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);
};
});
ありがとう、ヤロン