2009-03-29 59 views
22

Tôi có biểu mẫu có số <input type=text /> và tôi muốn gọi hàm javascript sau 5 giây của lần nhấn phím cuối cùng và mỗi lần nhấn một phím mới, bộ hẹn giờ này sẽ đặt lại và chỉ gọi hàm sau 5 giây.Gọi hàm javascript sau 5 giây bấm phím cuối cùng

Làm thế nào tôi có thể làm điều này?

Tôi đang sử dụng jQuery.

cảm ơn!

+0

Bạn có nghĩa là chìa khóa cuối cùng đã nhấn khi người dùng có lĩnh vực đầu vào hiện đang hoạt động? –

Trả lời

54

Something như thế này sẽ giúp bạn bắt đầu:

var timeout; 
$('input[type=text]').keypress(function() { 
    if(timeout) { 
     clearTimeout(timeout); 
     timeout = null; 
    } 

    timeout = setTimeout(myFunction, 5000) 
}) 
+0

thật tuyệt vời, cảm ơn! – Paulo

+0

Chỉ cần nhớ rằng chức năng hết thời gian chờ hoạt động theo mili giây. Đó là lý do tại sao anh ta sử dụng 5000. –

+4

Về mặt kỹ thuật, thiết lập là null là thừa. – cletus

0

Mặc dù nó không sử dụng jQuery, bạn cũng có thể có một cái nhìn tại các chức năng debouncing mô tả here.

Steve

4

này là rất tốt, nhưng hãy nhớ rằng bạn cần phải kích hoạt mã này sau khi các tài liệu tải và sau khi tải chức năng để xóa thời gian chờ.

Đây là mã hoàn chỉnh:

var timeout; 
$(document).ready(function(){ 
    $('input[type=text]').keypress(function() { 
     if(timeout) { 
      clearTimeout(timeout); 
      timeout = null; 
     } 
     timeout = setTimeout(myFunction, 5000); 
    }); 
}); 

var myFunction = new function() { 
    alert('myFunction is running'); 
    clearTimeout(timeout); // this way will not run infinitely 
} 
Các vấn đề liên quan