2012-05-09 37 views
17

Tôi đang mã hóa một tập lệnh đơn giản để trích xuất thông tin cơ sở dữ liệu về sự kiện khóa đầu vào.Chỉ đăng ký khóa sau khóa cuối cùng với jquery

Sự cố tôi gặp phải là sự kiện khóa luôn được lặp lại mỗi lần người dùng nhấn một phím. Làm thế nào tôi có thể làm cho nó hoạt động chỉ sau khi nhấn phím cuối cùng?

Tôi nghĩ rằng tôi nên sử dụng một chức năng như setTimeOut() sau mỗi lần đăng ký, Nhưng tôi không biết làm thế nào ... bạn có thể làm cho tôi một ví dụ đơn giản xin vui lòng?

Xin lỗi vì xấu :) tiếng anh của tôi

Dưới đây là những gì tôi đã cố gắng để làm:

$("input").keyup(function() 
{ 
    var timer=setTimeout(function() { 
    }, 1000); 
    if(!timer) 
    { 
     //do .post ajax request 
    } 
}); 

Trả lời

36
var timer; 

$("input").on('keyup', function() { 
    clearTimeout(timer); //clear any running timeout on key up 
    timer = setTimeout(function() { //then give it a second to see if the user is finished 
     //do .post ajax request //then do the ajax call 
    }, 1000); 
}); 
+0

câu trả lời tuyệt vời, cảm ơn bạn! – Zippie

6

Bạn về cơ bản đó. Bạn chỉ cần xóa bộ hẹn giờ nếu họ nhập một chữ cái khác; nếu không, cuộc gọi lại của bạn sẽ thực thi sau 1000 ms bất kể họ có tiếp tục nhập hay không.

Something như thế này nên làm việc:

$("input").keyup(function (event) 
{ 
    var self = this; 
    if (self.timer) 
     clearTimeout(self.timer); 

    self.timer = setTimeout(function() 
    { 
     self.timer = null; 
     alert(self.value); 
    }, 1000); 

}); 

đâu tôi chỉ có cảnh báo, bạn muốn đặt mã ajax của bạn để viết lại cho máy chủ.

0

Tôi nghĩ nếu bạn làm điều này với sự kiện onchange bạn không cần phải đặt kiểm tra khoảng thời gian. bất cứ khi nào bạn hoàn thành đầu vào của mình và thay đổi tiêu điểm. nó kích hoạt sự kiện thay đổi cho bạn

$("input").onchange(function() 
{ 
    //extract database info 
} 
Các vấn đề liên quan