使用Angular的简单提交表单

Simple submit form using Angular

本文关键字:提交 表单 简单 Angular 使用      更新时间:2023-09-26

我是Angular的新手,但对谷歌很熟悉。

我无法找到如何使用Angular提交此表单,就像我们在jQuery中所做的那样。

<form>
   <input type="text" />
   <button type="button" class="saveDraft">Save Draft</button>
   <button type="submit">Submit</button>
<form>

我想通过保存草稿按钮提交此表单,但不是通过普通的提交按钮。

jQuery我们使用

$('.saveDraft').click(function () {
    $('form').submit(); // this will submit form 
});

你可以在form上有ng-submit指令,当你点击提交按钮时,它会调用ng-submit指令中提到的方法。

标记

<form name="myForm" ng-submit="submit()">
   <input name="name" type="text" ng-model="name"/>
   <button>Save Draft</button>
   <button type="submit">Submit</button>
<form>

阅读此处了解表单如何在AngularJS中工作

更新1

如果您想对按钮click进行验证,但使用ng-click指令将其类型设置为button,则如下所示

标记

<form name="myForm" ng-submit="submit()">
   <input name="name" type="text" ng-model="name"/>
   <button type="button" ng-click="manualSubmit()">Save Draft</button>
   <button type="submit">Submit</button>
<form>

代码

$scope.manualSubmit = function(){
   //do your the process of adding hidden fields.
   //then submit a form
   //if you don't want to submit on some cases then put it in condition block
   $('form').submit(); // this will submit form 
}

但从技术上讲,我不喜欢使用这种方法,因为使用带有make的jQuery问题角度摘要循环。

如果你真的想在表单中添加hidden字段,那么我会将它们保留在form本身上,而不是在提交表单之前动态添加。并且会使用ng-submit指令。

为了填充这些隐藏值,可以使用ng-value指令,其中包含scope变量。ng-value指令将更新这些隐藏字段,假设scopeVariable值从控制器更改,则会更新隐藏字段值。

<form name="myForm" ng-submit="submit()">
   <input name="name" type="text" ng-model="name"/>
   <input type="hidden" name="somehiddenfield" ng-value="scopeVariable"/>
   <button>Save Draft</button>
   <button type="submit">Submit</button>
<form>

更新2

根据注释,您希望使用angular手动提交表单,为此,您可以制定提交form的指令。在这种情况下你不需要屈服。

标记

<button type="button" my-submit="callback()">Save Draft</button>

指令

app.directive('mySubmit', function(){
  return {
     restrict: 'A',
     link: function(scope, element, attrs){
        element.on('click', function(event){
            //do stuff before submitting
            element.parent.submit(); //manually submitting form using angular
            if(attrs.callback)
               scope.$eval(attrs.callback);
        })
     }
  }
})

更新2 Plunkr

这里有一个例子:

<form ng-submit="submit()" ng-controller="ExampleController">
  Enter text and hit enter:
  <input type="text" ng-model="text" name="text" />
  <input type="submit" id="submit" value="Submit" />
  <pre>list={{list}}</pre>
</form>

以及文档:

https://docs.angularjs.org/api/ng/directive/ngSubmit

您只需用这个替换代码

<form name="myForm" ng-submit="submit()" action=" name of other page" autocomplete="on">`

<input name="name" type="text" ng-model="name"/> <button onClick="draft(this.form)">Save Draft</button> <button type="submit" name="submit">Submit</button>