Angular2 में (Keyup) के लिए क्या विकल्प हैं?


82

निम्न कुंजी महान काम करती है जब एंटर कुंजी जारी की जाती है। इसके अलावा और कौन से विकल्प उपलब्ध हैं ?keyupkeyup.enter

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

हो सकता है कि यह आपको एक संकेत दे सकता है github.com/angular/angular/issues/523 , हालांकि यह काफी पुराना है।
एरिक मार्टिनेज

जवाबों:


57

ये वर्तमान में परीक्षणों में प्रलेखित विकल्प हैं: ctrl, shift, एंटर और एस्केप। ये कुंजी बाइंडिंग के कुछ मान्य उदाहरण हैं:

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

आप इसे यहां ट्रैक कर सकते हैं जबकि कोई आधिकारिक डॉक्स मौजूद नहीं है, लेकिन उन्हें जल्द ही बाहर होना चाहिए।


5
वाह, यह जवाब तब दिया गया था जब एंगुलर अपने 20 वें अल्फा में था और यह आज भी काम करता है।
जेपी दस बर्ग



23

मैं कई प्रमुख घटनाओं - विशेष रूप से, Shift + Enter - के लिए बाध्य करने के लिए एक रास्ता खोज रहा था, लेकिन ऑनलाइन कोई भी अच्छा संसाधन नहीं खोज सका। लेकिन कीडिंग बाइंडिंग लॉग करने के बाद

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

मुझे पता चला कि कीबोर्ड इवेंट ने मुझे Shift + Enter का पता लगाने के लिए आवश्यक सभी जानकारी प्रदान की। पता चला है कि $eventएक काफी विस्तृत KeyboardEvent लौटाता है ।

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

वहाँ भी CtrlKey, AltKey, और MetaKey (यानी मैक पर कमांड कुंजी) के लिए झंडे।

KeyEventsPlugin, JQuery, या शुद्ध JS बाइंडिंग की कोई आवश्यकता नहीं है।



13

आज उसी समस्या पर प्रहार किया है।

ये खराब दस्तावेज हैं, एक खुला मुद्दा मौजूद है।

के लिए कुछ KeyUp , अंतरिक्ष की तरह:

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

के लिए कुछ keydown
(KeyUp के लिए भी काम कर सकते हैं):

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

उपरोक्त सभी नीचे दिए गए लिंक से हैं:

https://github.com/angular/angular/issues/18870
https://github.com/angular/angular/issues/8273
https://github.com/angular/angular/blob/master/packages/platform- ब्राउज़र / src / dom / घटनाओं / key_events.ts
https://alligator.io/angular/binding-keyup-keydown-events/


11

आप इस तरह कीअप घटना जोड़ सकते हैं

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

घटक में, नीचे कुछ कोड की तरह

export class KeyUpComponent_v1 {
  values = '';

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

1
यह संख्याओं के लिए काम नहीं करता है। यदि मैं इनपुट क्षेत्र में नंबर टाइप करता हूं तो कीप इवेंट को निकाल नहीं दिया जाता है। उसके लिए हम क्या कर सकते हैं?
मोनिका

2

अपने KeyUp घटना के बाहर का है CTRL, SHIFT, ENTERऔर ESCब्रैकेट, बस @Md अयूब अली Sarker की मार्गदर्शिका का उपयोग करें। केवल कीप छद्म-घटना का उल्लेख यहाँ कोणीय डॉक्स https://angular.io/docs/ts/latest/guide/user-input.html में किया गया है ENTER। नंबर की और अल्फाबेट के लिए कोई की-सी छद्म घटनाएँ नहीं हैं।


क्षमा करें, रॉबर्ट। मेरे पास लिंक का उपयोग करके कोणीय डॉक्स पर नेविगेट करने के लिए कोई समस्या नहीं थी। यह काम करता हैं।
Benn64

हाँ, अब यह काम करता है। शायद मुद्दा मेरी तरफ था। माफ़ करना।
रॉबर्ट

1

keyCodeआप उपयोग कर सकते हैं हटा दिया गया है keyमें संपत्तिKeyboardEvent

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

टाइपप्रति:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.