angular2通过按Enter键提交表单而不提交按钮

Flo*_*nce 88 forms submit angular

是否可以提交没有提交按钮的表单(按Enter键)示例:

<form [ngFormModel]="xxx" (ngSubmit)="xxxx()">
  <input [(ngModel)]="lxxR"   ngControl="xxxxx"/>
</form
Run Code Online (Sandbox Code Playgroud)

siz*_*zle 181

你也可以添加 (keyup.enter)="xxxx()"

  • 这应该是公认的答案.只有Angular才能实现的优雅.辉煌. (4认同)
  • Angular文档中提到了这种方法.https://angular.io/docs/ts/latest/guide/user-input.html#!#key-event-filtering-with-key-enter- (3认同)

Abd*_*yer 79

编辑:

  <form (submit)="submit()" >
    <input />
    <button type="submit" style="display:none">hidden submit</button>
  </form>
Run Code Online (Sandbox Code Playgroud)

为了使用这种方法,你需要有一个提交按钮,即使它没有显示"感谢Toolkit的回答 "

旧答案:

是的,正如您所写的那样,除了事件名称(submit)而不是(ngSubmit):

<form [ngFormModel]="xxx" (submit)="xxxx()">
  <input [(ngModel)]="lxxR"   ngControl="xxxxx"/>
</form>
Run Code Online (Sandbox Code Playgroud)

  • 你能提供一个矮人吗?因为它不起作用 (2认同)

Kha*_*ari 67

也许您添加keypresskeydown输入字段并将事件分配给将在单击输入时执行提交的功能

你的模板看起来像这样

<form (keydown)="keyDownFunction($event)">
  <input type="text" />
</form
Run Code Online (Sandbox Code Playgroud)

而你在班级里面的功能看起来就像这样

keyDownFunction(event) {
  if(event.keyCode == 13) {
    alert('you just clicked enter');
    // rest of your code
  }
}
Run Code Online (Sandbox Code Playgroud)

  • Abdulrahman的答案更好 (17认同)
  • 这个解决方案创造了作 而是使用Abdulrahman (5认同)

Mar*_*der 30

我更喜欢,(keydown.enter)="mySubmit()"因为如果光标在某个位置<textarea>但不在其末端,则不会添加换行符.


Cla*_*sos 23

这种方式很简单......

<form [formGroup]="form" (keyup.enter)="yourMethod(form.value)">

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

  • 谢谢你,我的预期更容易.解决方法如下:<input type ="text"class ="form-control"[(ngModel)] ="object.LanguageTableData"(blur)="mymethod()"(keyup.enter)="mymethod()"/ > (2认同)
  • 这种方式比使用 $event 发送函数要容易得多。谢谢你! (2认同)

San*_*dam 10

(keyup.enter)="methodname()"
Run Code Online (Sandbox Code Playgroud)

这应该有效并且已经在许多答案中提到过,但是它应该出现在表单标签上而不是按钮上。


Sha*_*sul 7

始终使用keydown.enter而不是keyup.enter来避免滞后.

<textarea [(ngModel)]="textValue" (keydown.enter)="sendMessage();false" ></textarea>
Run Code Online (Sandbox Code Playgroud)

和component.ts中的函数

 textValue : string = '';  
 sendMessage() {
    console.log(this.textValue);
    this.textValue = '';
  }
Run Code Online (Sandbox Code Playgroud)


Too*_*kit 6

添加一个不可见的提交按钮就可以了

<input type="submit" style="display: none;">


Sau*_*wal 6

只需添加即可 (keyup.enter)="yourFunction()"


Dmi*_*try 6

这里的大多数答案都建议使用以下内容:

<form [formGroup]="form" (ngSubmit)="yourMethod()" (keyup.enter)="yourMethod()">

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

这种方法不会导致表单对象被标记为submitted。你可能不关心这个,但如果你使用@ngspot/ngx-errors(无耻的自我推销)之类的东西来显示验证错误,你会想要解决这个问题。就是这样:

<form [formGroup]="form" (ngSubmit)="yourMethod()" (keyup.enter)="submitBtn.click()">
  <button #submitBtn>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)


Abd*_*zad 5

将此添加到您的输入标签中

<input type="text" (keyup.enter)="yourMethod()" />
Run Code Online (Sandbox Code Playgroud)