Các tùy chọn cho (keyup) trong Angular2 là gì?


Câu trả lời:


57

Đây là các tùy chọn hiện được ghi lại trong các thử nghiệm: ctrl, shift, enter và Escape. Đây là một số ví dụ hợp lệ về các ràng buộc chính:

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

Bạn có thể theo dõi điều này ở đây trong khi không có tài liệu chính thức nào tồn tại, nhưng chúng sẽ sớm ra mắt.


5
Chà, câu trả lời này đã được đưa ra khi Angular ở bản alpha thứ 20 và nó vẫn hoạt động cho đến ngày nay.
JP ten Berge



23

Tôi đang tìm cách liên kết với nhiều sự kiện chính - cụ thể là Shift + Enter - nhưng không thể tìm thấy bất kỳ tài nguyên tốt nào trực tuyến. Nhưng sau khi đăng nhập ràng buộc keydown

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

Tôi phát hiện ra rằng sự kiện bàn phím đã cung cấp tất cả thông tin tôi cần để phát hiện Shift + Enter. Hóa ra nó $eventtrả về một KeyboardEvent khá chi tiết .

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

Ngoài ra còn có các cờ cho CtrlKey, AltKey và MetaKey (tức là phím Command trên Mac).

Không cần KeyEventsPlugin, JQuery hoặc liên kết JS thuần túy.



12

Đã gặp vấn đề tương tự ngày hôm nay.

Đây là những tài liệu kém, một vấn đề mở tồn tại.

Một số cho keyup , như khoảng trắng :

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

Một số cho keydown
(cũng có thể hoạt động cho keyup):

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

Tất cả ở trên là từ các liên kết dưới đây:

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

bạn có thể thêm sự kiện keyup như thế này

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

trong Thành phần, mã một số như dưới đây

export class KeyUpComponent_v1 {
  values = '';

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

1
Điều này không hiệu quả với các con số. Sự kiện keyup không được kích hoạt nếu tôi nhập số vào trường nhập. Chúng ta có thể làm gì cho điều đó?
monica

2

Nếu sự kiện KeyUp của bạn nằm ngoài CTRL, SHIFT, ENTERESCkhung, chỉ cần sử dụng hướng dẫn @Md Ayub Ali Sarker của. Sự kiện giả keyup duy nhất được đề cập ở đây trong tài liệu góc https://angular.io/docs/ts/latest/guide/user-input.htmlENTERchìa khóa. Chưa có sự kiện giả keyup nào cho các phím số và bảng chữ cái.


Xin lỗi, Robert. Tôi không gặp vấn đề gì khi điều hướng đến tài liệu Angular bằng liên kết. Nó hoạt động.
Benny64

Có, nó hoạt động ngay bây giờ. Có lẽ vấn đề nằm ở phía tôi. Lấy làm tiếc.
robert

0

Không keyCodedùng nữa, bạn có thể sử dụng keythuộc tính trongKeyboardEvent

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

Chữ viết:

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

Một lượt thích với các sự kiện

(keydown)="$event.keyCode != 32 ? $event:$event.preventDefault()"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.