2017-01-26 3 views
0

Ich habe eine Funktion, aber zwei Ereignisse. Erstes Ereignis für Eingabe und Tastendruck, zweites Ereignis für Schaltfläche und Klick.Wie kombiniert man die beiden Ereignisse Tastendruck und klicken Sie

<input class="text"> 
    <button class="btn">Next</button> 

und jQuery-Code:

 function submit() { 
      var inputValue = $('.text').val(); 
      alert('inputValue'); 
     }; 

     $('.btn').on('click', function() { 
      submit(); 
     }); 
     $('input').keydown(function(e) { 
      if(e.which == 13) { 
      submit(); 
      } 
     }); 

Kann ich kommen diese beiden Ereignisse?

+0

Mögliches Duplikat [mehr Ereignisse jQuery die gleiche Funktion auszulösen] (http://stackoverflow.com/questions/2534089/jquery-multiple-events-to-trigger-the-same-function) – Nenroz

+0

Es Es sieht so aus, als würden Sie versuchen, den Ereignis-Listener eines Formulars zu "emulieren". – pawel

+1

https://jsfiddle.net/L2vrf8gd/ – pawel

Antwort

0

wie die Sie interessieren ...

$('.btn, input').on('click keydown', function (event) { 
 
     if((event.type == 'click') 
 
      || (event.type == 'keydown' && event.which == 13)) { 
 
      //submit(); submit your form 
 
      alert('hi'); 
 
     }; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="text"> 
 
<button class="btn">Next</button>

+0

dies übergibt das Formular, wenn Sie auf das Eingabefeld klicken, um auch Daten einzugeben ... – Elena

+0

aufgrund der Code-ID '13'. –

0

Ja können Sie.

Fügen Sie denselben Ereignis-Listener für die Eingabe und die Schaltfläche hinzu.

Überprüfen Sie dann im Event-Handler den Typ des Ereignisses. Wenn der Typ keyup ist, überprüfen Sie den richtigen Schlüssel. Wenn beide erfüllt (keyup und which === 13) können Sie senden. Andernfalls, wenn die typeclick ist, können Sie auch senden.

Beispiel: https://jsfiddle.net/p33kmbja/1/

0

e.type - wir können Ereignis vom Typ bestimmen - click oder keydown.

$(e.target) - wir erhalten jQuery object, die durch ein Ereignis verursacht wurde.

e.which != 13 - bestimmen drücken Enter.

$('.btn, input').on('click keydown', function (e) { 
    if((e.type == 'keydown') 
     && $(e.target).is('input') 
     && (e.which != 13)) return; 

    submit(); 
}); 
+0

Fügen Sie eine Erklärung mit der Antwort hinzu, wie diese Antwort OP hilft, das aktuelle Problem zu beheben –

Verwandte Themen