2016-06-15 7 views
0

Ich habe einen eckigen Bootstrap typeahead und der Code ist wie unten angegeben.AngularJs Bootstrap typeahead erkennt Ereignis ausgelöst auf Enter-Taste

Html:

<div class="col-sm-12 dlg-zero-margin-padding hide-last-result" align="left"> 
    <input type="text" id="myInput" 
     ng-model="selected" 
     ng-keyup="myKeyUp(event,this.value)" 
     typeahead="item for item in filterInput($viewValue)" 
     typeahead-on-select='onSelect($item)'>      
</div> 

Mein Controller

$scope.myKeyUp(event, value) { 
    debugger; 
} 
$scope.onSelect(event, value) { 
    debugger; 
} 

Wenn Maus Fokus auf eine der Optionen typeahead, meine onSelect Funktion ist unabhängig von Mausklick aufgerufen oder Taste drücken Sie die Eingabetaste. I.E es wird aufgerufen, wenn eine Auswahl getroffen wird. Aber ich möchte zwischen einem Mausklick und der Eingabe der Schlüsselauswahl unterscheiden, da ich jeweils einen anderen Fluss hinzufügen möchte.

Wie kann ich 2 separate Funktionen auf Enter-Taste drücken und auf Mausklick aufrufen. Oder kann ich Enter-Taste drücken oder einen Mausklick in meiner OnSelect-Funktion?

Bitte beachten Sie: Ein Schlüsselereignis (d. H. MyKeyUp()) wird nicht ausgelöst, wenn ich "enter" drücke. Nur die OnSelect-Funktion wird aufgerufen.

Antwort

0

in Ihrer Funktion können Sie feststellen, ob Enter-Taste gedrückt wird und zu handhaben beide Fall

$scope.onSelect(event, value) { 
if(event.which ===13){ 
//enter is pressed 
}else{ 
debugger; 
} 
} 
+0

typeahead-on-select erlaubt Ihnen nicht, um das Ereignis zu übergeben. Also das wird nicht möglich sein – ASR

+1

können wir immer noch unterscheiden mit ng-keypress = "handleEnter ($ event)" hier können wir Enter-Key-Ereignis behandeln, und bei Auswahl werden wir mouselect Ereignis behandeln –

Verwandte Themen