是否可以提交没有提交按钮的表单(按Enter键) 例如:
<form [ngFormModel]="xxx" (ngSubmit)="xxxx()">
<input [(ngModel)]="lxxR" ngControl="xxxxx"/>
</form
答案 0 :(得分:164)
您还可以添加(keyup.enter)="xxxx()"
答案 1 :(得分:73)
修改强>
<form (submit)="submit()" >
<input />
<button type="submit" style="display:none">hidden submit</button>
</form>
要使用此方法,即使未显示“感谢Toolkit's answer”,您也需要提交按钮
旧答案:
是的,正如您所写,但事件名称为 (submit)
而不是(ngSubmit)
:
<form [ngFormModel]="xxx" (submit)="xxxx()">
<input [(ngModel)]="lxxR" ngControl="xxxxx"/>
</form>
击> <击> 撞击>
答案 2 :(得分:61)
也许您将 keypress
或 keydown
添加到输入字段,并将事件分配给将在点击输入时执行提交的功能
你的模板看起来像这样
<form (keydown)="keyDownFunction($event)">
<input type="text" />
</form
你在班级里面的功能看起来像这样
keyDownFunction(event) {
if(event.keyCode == 13) {
alert('you just clicked enter');
// rest of your code
}
}
答案 3 :(得分:26)
我更喜欢(keydown.enter)="mySubmit()"
,因为如果光标位于<textarea>
之内但不在其末尾,则不会添加换行符。
答案 4 :(得分:18)
这种方式很简单......
<form [formGroup]="form" (keyup.enter)="yourMethod(form.value)">
</form>
答案 5 :(得分:6)
添加一个不可见的提交按钮可以解决这个问题
<input type="submit" style="display: none;">
答案 6 :(得分:6)
只需添加(keyup.enter)="yourFunction()"
答案 7 :(得分:6)
始终使用keydown.enter而不是keyup.enter以避免滞后。
<textarea [(ngModel)]="textValue" (keydown.enter)="sendMessage();false" ></textarea>
和component.ts内部的功能
textValue : string = '';
sendMessage() {
console.log(this.textValue);
this.textValue = '';
}
答案 8 :(得分:3)
希望这可以帮助某些人:由于某些原因,如果您有以下形式,我无法追踪,如果您有以下形式:
<form (ngSubmit)="doSubmit($event)">
<button (click)="clearForm()">Clear</button>
<button type="submit">Submit</button>
</form>
当您点击Enter
按钮时,即使预期的行为是调用clearForm
函数,也会调用doSubmit
函数。
将Clear
按钮更改为<a>
标记可以解决我的问题。
我仍然想知道这是否有所期待。似乎让我感到困惑
答案 9 :(得分:2)
(keyup.enter)="methodname()"
这应该起作用,并且已经在许多答案中提到,但是应该在表单标签上而不是按钮上显示。
答案 10 :(得分:2)
这里的大多数答案建议使用类似的东西:
<form [formGroup]="form" (ngSubmit)="yourMethod()" (keyup.enter)="yourMethod()">
</form>
此方法不会导致将表单对象标记为submitted
。您可能对此并不在意,但是如果您使用@ngspot/ngx-errors(无耻的自我促销)之类的东西来显示验证错误,则需要解决该问题。方法如下:
<form [formGroup]="form" (ngSubmit)="yourMethod()" (keyup.enter)="submitBtn.click()">
<button #submitBtn>Submit</button>
</form>
答案 11 :(得分:1)
如果你想同时包括 - 在输入时接受并在点击时接受,那么 -
<div class="form-group">
<input class="form-control" type="text"
name="search" placeholder="Enter Search Text"
[(ngModel)]="filterdata"
(keyup.enter)="searchByText(filterdata)">
<button type="submit"
(click)="searchByText(filterdata)" >
</div>
答案 12 :(得分:1)
将此添加到您的输入标签中
<input type="text" (keyup.enter)="yourMethod()" />
答案 13 :(得分:0)
如果要包括比我在这里看到的更简单的和,只需在表单中包含按钮即可。
具有发送消息功能的示例:
<form>
<mat-form-field> <!-- In my case I'm using material design -->
<input matInput #message maxlength="256" placeholder="Message">
</mat-form-field>
<button (click)="addMessage(message.value)">Send message
</button>
</form>
您可以选择单击按钮还是按Enter键。
答案 14 :(得分:0)
好吧,我想说的是,这里有一个小警告。如果您想提交表单,则上述方法均无效,除非您点击表单上的任意位置或专门点击输入字段。
好吧,如果你想通过回车而不点击任何地方来提交表单,你需要在 html 中全局声明它:
<button (window:keypress)="onSomeAction($event)">
并在 TS 文件中:
onSomeAction(event){
if(event.keyCode===13){
//submit form
}
}
或
<button (window:keypress.enter)="onSomeAction($event)">