Frage Binden mehrerer Ereignisse für dasselbe Element, dann Filtern bestimmter Aktionen


Ich versuche, einen Unschärfe- und Tastaturereignishandler an ein Textfeld zu binden. Ich möchte nur, dass die Logik bei allen Blur-Ereignissen und im Falle der Tastatureingabe nur dann ausgeführt wird, wenn der Benutzer Enter / Return (Code 13) drückt. Dies sollte einfach sein, wenn ich sagen kann, welche der Ereignisse erfasst wurden, aber ich kann anscheinend nichts finden, was beschreibt, nach was ich suchen muss. Schnelle paar Punkte für eine einfache Antwort.


5
2017-08-23 15:14


Ursprung


Antworten:


Sie können die jQuery verwenden Ereignisobjekt um Informationen über die Veranstaltung zu erhalten. event.type wird Ihnen sagen, welches Ereignis ausgelöst wurde.

$('#textBox').bind('blur keyup', function(e){
   if( e.type === 'blur' || (e.type === 'keyup' && e.which === 13) ){
     // Code...
   }
});

Sie können auch nur überprüfen event.which was sein wird undefined wenn es ein ist blur Veranstaltung.

$('#textBox').bind('blur keyup', function(e){
   if( typeof e.which === 'undefined' || e.which === 13 ){
     // Code...
   }
});

15
2017-08-23 15:19



Benutzen event.type:

$('input:text').bind('keyup blur',
                     function(e){
                         alert(e.type);
                     });

JS Geige.

$('input:text').bind('keyup blur',
                     function(e){
                         var t = e.type;
                         if (t == 'blur'){
                             $(this).css('background-color','red');
                         }
                         else if (t== 'keyup') {
                             $(this).css('background-color','green');
                         }
                     });

JS Fiddle Demo.

Referenz:


2
2017-08-23 15:18



$('input').keyup(function(e){

    var code = (e.keyCode ? e.keyCode : e.which);

    if(code == 13) /* enter was pressed */
        your_function();

});

0
2017-08-23 15:19