如何在AngularJS中手动触发表单的提交?

Hao*_*Hao 17 javascript angularjs

我有一个我希望嵌套的表单,但由于HTML无法接受嵌套表单,因此无法实现.有没有办法可以在AngularJS的第一个表单上手动调用提交(触发验证,例如需要)?

这是代码的样子:

<div ng-conroller="ContactController">

    <form ng-submit="saveHeaderAndDetail()">
        <label for="Description">Description</label>
        <input type="text" ng-model="Description" required/> 

        <input type="text" style="visibility:hidden" />
    </form>

    <form ng-submit="addToDetail()">
    ... 
    </form>

    <input type="button" 
        ng-click="what code could trigger the first form's submit?"/>

</div>
Run Code Online (Sandbox Code Playgroud)

顺便说一下,如果有帮助,两种形式都在一个控制器下

And*_*lin 9

尝试创建捕获事件的指令:http://jsfiddle.net/unWF3/


man*_*nta 6

我在这里回答了一个类似的问题AngularJS - 如何以嵌套的形式触发提交

基本上,您可以通过触发$validate事件来触发验证

isFormValid = function($scope, ngForm) {
    $scope.$broadcast('$validate');
    if(! ngForm.$invalid) {
      return true;
}
Run Code Online (Sandbox Code Playgroud)

有关工作代码示例和有助于显示验证消息的小实用程序方法,请参阅上面链接中的答案.

  • 如果你有一个带有ng-submit的表单,一个<button type ="submit">和一个带有手动ng-click的<button type ="button">,你可以调用`$`$ scope.$ broadcast ( '$验证');``` (3认同)