2013-02-03 9 views
6

mam następujące dwie funkcje:Jak połączyć funkcję keypress & on click w JavaScript?

$("input").keypress(function(event) { 
    if (event.which == 13) { 
    //code   
    }  
}); 

$('#login_submit').click(function() {   
    //code      
}); 

Kod, który jest używany w funkcjach są dokładnie tego samego kodu, w zasadzie code dublication. Więc zastanawiałem się, czy istnieje sposób na połączenie tych funkcji z wyrażeniem OR?

+1

Dlaczego nie wystarczy umieścić ten kod w osobnej funkcji? I zadzwoń do funkcji ... –

+0

Potrzebuję tego samego, ale z logiką AND – Erdnuss

Odpowiedz

15

Utwórz własne wywołanie zwrotne i przekaż je do obsługi zdarzeń.

var callback = function() {...}; 

$("input").keypress(function() { 
    if (event.which == 13) callback(); 
}); 

$('#login_submit').click(callback); 
+1

Użyłem tego rozwiązania i działa idealnie. Dzięki David. – Sino

0

Dlaczego tego nie zrobisz?

$("input").keypress(function(event) { 
    if (event.which == 13) { 
     foospace.yourfunction(); 
    }  
}); 

$('#login_submit').click(function() {   
    foospace.yourfunction();      
}); 

var foospace={}; 
foospace.yourfunction=function() { 
    alert("your code goes here!"); 
} 

Edit:

Rozwiązanie zwrotna przez @David jest nieco bardziej elegancki.

5

Dodaj klasę do kodu HTML

<input class="myClass"> 
<div id="login_submit" class="myClass" ></div> 

Teraz można napisać:

$(".myClass").bind("keypress click", function(){}); 

Albo zrobić to:

$("input").add("#login_submit").bind("keypress click", function(){}); 

Należy pamiętać, że kliknięcie na wejściu będą także powodowały to.

0

bym łańcuch wydarzeń, takich jak:

 var watchCurrentCursorPosition = function(){ 
      console.log("foo"); 
     } 
     $("input").keypress(
      watchCurrentCursorPosition 

     ).click(
      watchCurrentCursorPosition 
     );