form agregar javascript angular jquery dom-events html events

javascript - agregar - ¿La tecla Enter activa un evento de clic?



angular html include (6)

¡Aquí está la SOLUCIÓN correcta! Dado que el botón no tiene un tipo de atributo definido, angular puede intentar emitir el evento keyup como una solicitud de envío y activa el evento click en el botón.

<button type="button" ...></button>

Muchas gracias a DeborahK!

Angular2: la tecla Intro ejecuta la primera función (clic) presente en el formulario

En el siguiente código, se debe llamar a handleKeyDown($event) cuando se hace clic en un elemento span y se debe handleKeyDown($event) cuando hay un evento keydown en un div .

@Component({ selector: "wng-country-picker", template: ` <ul class="CountryPicker-selected" *ngIf="selectedCountries.length > 0"> <li *ngFor="let country of selectedCountries"> <span class="Pill Pill--primary" (click)="removeSelectedCountry(country)"> {{ country.name }} </span> </li> </ul> <div (keydown)="handleKeyDown($event)" class="CountryPicker-input"></div> `, providers: [CUSTOM_VALUE_ACCESSOR] })

Pero se llama a removeSelectedCountry() cada vez que se presiona la tecla Enter .

Para que el código funcione, tuve que cambiar el evento de click evento de mousedown . Funciona bien ahora.

¿Alguien puede explicar por qué la tecla Intro activaría el evento de click ?

@Component({ selector: "wng-country-picker", template: ` <ul class="CountryPicker-selected" *ngIf="selectedCountries.length > 0"> <li *ngFor="let country of selectedCountries"> <span class="Pill Pill--primary" (mousedown)="removeSelectedCountry(country)"> {{ country.name }} </span> </li> </ul> <div (keydown)="handleKeyDown($event)" class="CountryPicker-input"></div> `, providers: [CUSTOM_VALUE_ACCESSOR] })

Agregar fragmento de clase:

export class CountryPickerComponent { private selectedCountries: CountrySummary[] = new Array(); private removeSelectedCountry(country: CountrySummary){ // check if the country exists and remove from selectedCountries if (this.selectedCountries.filter(ctry => ctry.code === country.code).length > 0) { var index = this.selectedCountries.indexOf(country); this.selectedCountries.splice(index, 1); this.selectedCountryCodes.splice(index, 1); } } private handleKeyDown(event: any) { if (event.keyCode == 13) { // action } else if (event.keyCode == 40) { // action } else if (event.keyCode == 38) { // action } }


Para angular 6 hay una nueva forma de hacerlo. En su etiqueta de entrada agregue

(keyup.enter)="keyUpFunction($event)"

Donde keyUpFunction($event) es su función.


Para la tecla ENTER, por qué no usar (keyup.enter) :

@Component({ selector: ''key-up3'', template: ` <input #box (keyup.enter)="values=box.value"> <p>{{values}}</p> ` }) export class KeyUpComponent_v3 { values = ''''; }


Uso (keyup.enter) .

Angular puede filtrar los eventos clave para nosotros. Angular tiene una sintaxis especial para eventos de teclado. Podemos escuchar solo la tecla Enter keyup.enter al keyup.enter de Angular.


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

someMethod(event:any){ if(event.keyCode == 13){ alert(''Entered Click Event!''); }else{ } }


@Component({ selector: ''key-up3'', template: ` <input #box (keyup.enter)="doSomething($event)"> <p>{{values}}</p> ` }) export class KeyUpComponent_v3 { doSomething(e) { alert(e); } }

Esto funciona para mi!