【问题标题】:How do I submit a form when input ng-change in AngularJS在AngularJS中输入ng-change时如何提交表单
【发布时间】:2015-02-19 16:36:34
【问题描述】:

当任何输入被点击(或更改)时,提交表单的“AngularJS 方式”是什么?

<form ng-submit="submit($event)" id="myForm">
  <input type="checkbox" name="foo" value="bar" ng-click="???"/>
</form>

我很想使用 jQuery 并简单地做 ng-click="$('#myForm').submit()",但它可能值得好好学习。

我试过做ng-click="submit($event)",但这里的错误是input范围内的$event对象而不是整个form(如果我错了,请纠正我,这就是我m 从文档中获取)。

【问题讨论】:

    标签: angularjs forms submit


    【解决方案1】:

    好吧,你可以通过触发 AngularJS 提交事件来肯定地做这样的事情:

    $scope.change = function($event) {
        $timeout(function() {
            angular.element($event.target.form).triggerHandler('submit');
        });
    };
    

    在哪里

    <input type="checkbox" name="foo" value="bar" ng-click="change($event)" />
    

    但是我认为最好在ngClick 中使用与ngSubmit 中相同的函数。

    演示:http://plnkr.co/edit/tJIYD9ZVjYzwA2aXJobo?p=preview

    【讨论】:

    • 现在试试这个,快速提问:我正在尝试在我的$scope.submit 函数中记录表单的查询字符串(即?foo=bar)。在 jQuery 中,我会使用 $(event.currentTarget).serialize();。我将如何使用普通的 angular/jQLite console.log 查询字符串?
    • 为什么需要它?如果您计划使用 AJAX 调用发送数据,那么 $http 服务将为您从对象中序列化数据。如果你使用 jQuery,你仍然可以使用$.param({...})
    • 确保您在输入元素上使用 ngModel 指令,例如 &lt;input type="checkbox" name="foo" ng-model="model.check" value="bar" ng-click="change($event)" /&gt; &lt;input type="text" ng-model="model.name"&gt; 等。然后您将能够以 $scope.model 的身份访问模型数据 - 将为您提供一个数据对象,您可以使用它可以使用$http发送到后端。
    • 很遗憾,我对如何实现 ajax 请求没有发言权,我必须获取查询字符串。
    • 是的,在角度上它有点不方便。有不同的方法。看看这个问题:stackoverflow.com/questions/14514461/…
    【解决方案2】:

    ng-change 对我有用的是使用文本输入:

    <form>
        <select data-ng-model="headerName" data-ng-options="header for header in headers"
                data-ng-change="calculateCorrelations()"></select>
    </form>
    

    【讨论】:

      猜你喜欢
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2020-11-05
      • 2015-04-03
      相关资源
      最近更新 更多