angular2 submit form by pressing enter without submit button

FormsAngularSubmit

Forms Problem Overview


Is it possible to submit a form that does not have submit button (by pressing enter) example :

<form [ngFormModel]="xxx" (ngSubmit)="xxxx()">
  <input [(ngModel)]="lxxR"   ngControl="xxxxx"/>
</form

Forms Solutions


Solution 1 - Forms

You can also add (keyup.enter)="xxxx()"

Solution 2 - Forms

Maybe you add keypress or keydown to the input fields and assign the event to function that will do the submit when enter is clicked.

Your template would look like this

    <form (keydown)="keyDownFunction($event)">
      <input type="text" />
    </form

And you function inside the your class would look like this

    keyDownFunction(event) {
      if (event.keyCode === 13) {
        alert('you just pressed the enter key');
        // rest of your code
      }
    }

Solution 3 - Forms

Edit:

  <form (submit)="submit()" >
    <input />
    <button type="submit" style="display:none">hidden submit</button>
  </form>

In order to use this method, you need to have a submit button even if it's not displayed "Thanks for Toolkit's answer"

Old Answer:

Yes, exactly as you wrote it, except the event name is (submit) instead of (ngSubmit):

<form [ngFormModel]="xxx" (submit)="xxxx()">
  <input [(ngModel)]="lxxR"   ngControl="xxxxx"/>
</form>

Solution 4 - Forms

I prefer (keydown.enter)="mySubmit()" because there won't be added a line break if the cursor was somewhere within a <textarea> but not at its end.

Solution 5 - Forms

This way is much simple...

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

</form>

Solution 6 - Forms

add this inside your input tag

<input type="text" (keyup.enter)="yourMethod()" />

Solution 7 - Forms

Always use keydown.enter instead of keyup.enter to avoid lagging.

<textarea [(ngModel)]="textValue" (keydown.enter)="sendMessage();false" ></textarea>

and function inside component.ts

 textValue : string = '';  
 sendMessage() {
    console.log(this.textValue);
    this.textValue = '';
  }

Solution 8 - Forms

(keyup.enter)="methodname()"

this should work and already mentioned in many answers, however that should be present on form tag and not on button.

Solution 9 - Forms

Just simply add (keyup.enter)="yourFunction()"

Solution 10 - Forms

Most answers here suggest using something like:

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

</form>

This approach does not result in the form object being marked as submitted. You might not care for this, but if you're using something like @ngspot/ngx-errors (shameless self-promotion) for displaying validation errors, you gonna want to fix that. Here's how:

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

Solution 11 - Forms

adding an invisible submit button does the trick

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

Solution 12 - Forms

Hopefully this can help somebody: for some reason I couldn't track because of lack of time, if you have a form like:

<form (ngSubmit)="doSubmit($event)">
  <button (click)="clearForm()">Clear</button>
  <button type="submit">Submit</button>
</form>

when you hit the Enter button, the clearForm function is called, even though the expected behaviour was to call the doSubmit function. Changing the Clear button to a <a> tag solved the issue for me. I would still like to know if that's expected or not. Seems confusing to me

Solution 13 - Forms

If you want to include both simpler than what I saw here, you can do it just by including your button inside form.

Example with a function sending a message:

				<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>

You can choose between clicking on the button or pressing enter key.

Solution 14 - Forms

If you want to include both - accept on enter and accept on click then do -

 <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>

Solution 15 - Forms

Well, there's a small caveat here, I would say. None of the above would work if you want to submit the form until unless you click anywhere on the form or specifically on the input field.

Well if you want to submit the form just by hitting enter without clicking anywhere, you need to declare it globally in html:

<button (window:keypress)="onSomeAction($event)">

and in TS file :

onSomeAction(event){
if(event.keyCode===13){
  //submit form
}

}

OR

<button (window:keypress.enter)="onSomeAction($event)">

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFlorenceView Question on Stackoverflow
Solution 1 - FormssizzleView Answer on Stackoverflow
Solution 2 - FormsKhaled Al-AnsariView Answer on Stackoverflow
Solution 3 - FormsAbdulrahman AlsoghayerView Answer on Stackoverflow
Solution 4 - FormsMartin SchneiderView Answer on Stackoverflow
Solution 5 - FormsClayton K. N. PassosView Answer on Stackoverflow
Solution 6 - FormsAbdus Salam AzadView Answer on Stackoverflow
Solution 7 - FormsShamsulView Answer on Stackoverflow
Solution 8 - FormsSantosh KadamView Answer on Stackoverflow
Solution 9 - FormsSaurabh AgrawalView Answer on Stackoverflow
Solution 10 - FormsDmitry EfimenkoView Answer on Stackoverflow
Solution 11 - FormsToolkitView Answer on Stackoverflow
Solution 12 - FormsAndrea GherardiView Answer on Stackoverflow
Solution 13 - FormsEmericView Answer on Stackoverflow
Solution 14 - Formsuser9630712View Answer on Stackoverflow
Solution 15 - FormsKamil KafoorView Answer on Stackoverflow