2015-08-22 11 views
45

Quanto segue funziona in modo ottimale quando viene immessa la chiave . Quali altre opzioni sono disponibili per keyup in aggiunta a keyup.enter?Quali sono le opzioni per (keyup) in Angular2?

<input #inputstring (keyup.enter)="doSomething(inputstring.value)"/> 
+0

Forse questo potrebbe darvi un suggerimento https://github.com/angular/angular/issues/523, è piuttosto vecchio però. –

risposta

43

Queste sono le opzioni attualmente documentati nelle prove: ctrl, shift, entrare e fuggire. Questi sono alcuni esempi validi di combinazioni di tasti:

keydown.control.shift.enter 
keydown.control.esc 

È possibile tenere traccia di questo here mentre non esistono documentazione ufficiale, ma dovrebbe essere presto fuori.

+3

Wow, questa risposta è stata data quando Angular era nel suo 20 ° alfa e funziona ancora oggi. –

+0

Documentazione correlata https://angular.io/guide/user-input#key-event-filtering-with-keyenter –

2

è possibile aggiungere keyup evento come questo

template: ` 
    <input (keyup)="onKey($event)"> 
    <p>{{values}}</p> 
` 

in Component, codice di alcuni, come di seguito

export class KeyUpComponent_v1 { 
    values = ''; 

    onKey(event:any) { // without type info 
    this.values += event.target.value + ' | '; 
    } 
} 
+0

Questo non funziona per i numeri. L'evento keyup non viene attivato se si digita numero nel campo di input. Cosa possiamo fare per quello? – monica

1

Se il keyup ev ent è al di fuori della CTRL, SHIFT, ENTER e ESC staffa, basta usare la guida di @Md Ayub Ali Sarker. L'unico pseudo evento keyup menzionato qui nei documenti angolari https://angular.io/docs/ts/latest/guide/user-input.html è INVIO chiave. Non ci sono ancora pseudo-eventi keyup per chiavi numeriche e alfabeti.

1

Ero alla ricerca di un modo per associare a più eventi chiave, in particolare Maiusc + Invio, ma non sono riuscito a trovare alcuna buona risorsa online. Ma dopo l'accesso il legame

<textarea (keydown)=onKeydownEvent($event)></textarea> 

keydown ho scoperto che l'evento della tastiera fornito tutte le informazioni di cui avevo bisogno per rilevare Maiusc + Invio. Risulta che $event restituisce un abbastanza dettagliato KeyboardEvent.

onKeydownEvent(event: KeyboardEvent): void { 
    if (event.keyCode === 13 && event.shiftKey) { 
     // On 'Shift+Enter' do this... 
    } 
} 

C'è anche bandiere per il ctrlKey, altKey, e metakey (tasto cioè Command su Mac).

Nessuna necessità per KeyEventsPlugin, JQuery o un binding JS puro.

Problemi correlati