Angular2'de (keyup) seçenekleri nelerdir?


Yanıtlar:


57

Şu anda testlerde belgelenen seçenekler şunlardır: ctrl, shift, enter ve escape. Bunlar, anahtar bağlamaların bazı geçerli örnekleridir:

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

Resmi belgeler yokken bunu buradan takip edebilirsiniz , ancak yakında çıkacaklar.


5
Vay canına, bu cevap Angular 20. alfasındayken verildi ve bugün hala çalışıyor.
JP ten Berge



23

Birden çok önemli olaya (özellikle Shift + Enter) bağlanmanın bir yolunu arıyordum, ancak çevrimiçi olarak iyi bir kaynak bulamadım. Ancak keydown bağını kaydettikten sonra

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

Klavye olayının Shift + Enter'ı algılamak için ihtiyacım olan tüm bilgileri sağladığını keşfettim. $eventOldukça ayrıntılı bir KeyboardEvent döndürdüğü ortaya çıktı .

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

Ayrıca CtrlKey, AltKey ve MetaKey için işaretler de vardır (yani Mac'te Command tuşu).

KeyEventsPlugin, JQuery veya saf JS bağlantısına gerek yok.



13

Bugün aynı sorunu yaşadım.

Bunlar yeterince belgelenmemiş, açık bir sorun var.

Bazıları anahtarlama için , boşluk gibi:

<input (keyup.space)="doSomething()">
<input (keyup.spacebar)="doSomething()">  

Bazıları keydown için
(keyup için de çalışabilir):

<input (keydown.enter)="...">
<input (keydown.a)="...">
<input (keydown.esc)="...">
<input (keydown.alt)="...">
<input (keydown.shift.esc)="...">
<input (keydown.shift.arrowdown)="...">
<input (keydown.f4)="...">

Yukarıdakilerin tümü aşağıdaki bağlantılardandır:

https://github.com/angular/angular/issues/18870
https://github.com/angular/angular/issues/8273
https://github.com/angular/angular/blob/master/packages/platform- browser / src / dom / events / key_events.ts
https://alligator.io/angular/binding-keyup-keydown-events/


11

bunun gibi keyup olayı ekleyebilirsiniz

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

Bileşende, aşağıdaki gibi kodlayın

export class KeyUpComponent_v1 {
  values = '';

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

1
Bu sayılar için işe yaramaz. Giriş alanına sayı yazarsam keyup olayı tetiklenmez. Bunun için ne yapabiliriz?
monica

2

Senin keyUp olay dışındaysa CTRL, SHIFT, ENTERve ESCparantez, sadece @Md Ayub Ali SARKER kılavuzuna kullanın. Burada açısal belgelerde https://angular.io/docs/ts/latest/guide/user-input.html'de bahsedilen tek ENTERanahtar oluşturma sözde olayı anahtardır. Henüz sayı tuşları ve alfabeler için herhangi bir sözde anahtarlama etkinliği yok.


Üzgünüm Robert. Bağlantıyı kullanarak Angular dokümanlara giderken sorun yaşamadım. İşe yarıyor.
Benny64

Evet, şimdi çalışıyor. Muhtemelen sorun benim tarafımdaydı. Afedersiniz.
robert

1

Kullanımdan keyCodekaldırıldı, keymülk kullanabilirsinizKeyboardEvent

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

Typescript:

onKeydownEvent($event: KeyboardEvent){

    // you can use the following for checkig enter key pressed or not
    if ($event.key === 'Enter') {
      console.log($event.key); // Enter
    }


    if ($event.key === 'Enter' && event.shiftKey) {
           //This is 'Shift+Enter' 
    }
}

0

Olaylarla beğeni

(keydown)="$event.keyCode != 32 ? $event:$event.preventDefault()"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.