2013-02-03 39 views
6

Tôi có hai chức năng sau:Làm thế nào để kết hợp chức năng bấm phím và bấm vào trong JavaScript?

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

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

Mã hiện đang được sử dụng trong các chức năng là CHÍNH XÁC cùng mã, về cơ bản đang dublication. Vì vậy, tôi đã tự hỏi nếu có một cách để kết hợp các chức năng này với một tuyên bố OR ??

+1

Tại sao không chỉ cần đặt mã trong một chức năng riêng biệt? Và gọi chức năng ... –

+0

tôi cần giống nhau nhưng với một logic AND – Erdnuss

Trả lời

15

Tạo cuộc gọi lại của riêng bạn và chuyển cho trình xử lý sự kiện.

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

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

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

Tôi đã sử dụng giải pháp này và nó hoạt động hoàn hảo. Cảm ơn David. – Sino

0

Tại sao bạn không làm như vậy?

$("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:

Giải pháp gọi lại bởi @ David là hơi thanh lịch hơn.

5

Thêm một lớp sang HTML

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

Bây giờ, bạn có thể viết:

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

Hoặc làm điều này:

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

Hãy nhận biết rằng cách nhấp vào đầu vào cũng sẽ kích hoạt điều này.

0

tôi sẽ chuỗi các sự kiện như:

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

     ).click(
      watchCurrentCursorPosition 
     ); 
Các vấn đề liên quan