Angular + Jquery - 程序化表单提交会导致重定向

时间:2013-09-03 22:24:35

标签: javascript jquery forms angularjs

我正在尝试编写一个包含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);
    };
});

谢谢, 亚龙

1 个答案:

答案 0 :(得分:11)

所以......如果有人有同样的问题。

解决方案是使用JQuery触发提交。 理想情况下会是:

angular.element($scope.inputElem[0].form).trigger('submit');

然而,Angular中存在一些错误,因此我发现的当前工作是:

angular.element($scope.inputElem[0].form).find('[type=submit]').trigger('click');

干杯。