Xét chỉnh sửa của bạn về vấn đề này được tập trung vào việc tiếp cận iPhone ...
iPhone thực sự chỉ là không có nhiều quyền lực đó với nó. Bạn chỉ nên sử dụng onchange
hoặc onblur
thay vì onkeydown
.
Một thay thế cho câu trả lời của Dave đang chờ người dùng tạm dừng (ví dụ trong 5 giây):
var textarea = document.getElementById('textarea');
function checkTextArea() {
if (textarea.value /* ... */) {
/* ... */
}
}
textarea.keyDownTimeout = null;
textarea.onkeydown = function() {
if (textarea.keyDownTimeout) clearTimeout(textarea.keyDownTimeout);
textarea.keyDownTimeout = setTimeout(checkTextArea, 5000);
};
này nên thiết lập bộ đếm thời gian với KeyDown đầu tiên, dừng lại và tái tạo hẹn giờ cho mỗi lần nhấn phím kế tiếp. Cuối cùng gọi 5 giây sau khi người dùng ngừng nhập.
Ngoài ra, hãy lưu ý việc thiếu dấu ngoặc đơn sau checkTextArea
. Điều này sẽ cung cấp cho setTimeout
tham chiếu của hàm so với tham số return
của hàm.
Bạn cũng có thể thiết lập này lên trong một chức năng để làm cho nó dễ dàng hơn để sử dụng cho nhiều yếu tố:
function setPauseTimer(element, timeout, callback) {
var timer = null;
element.onkeydown = function() {
if (timer) clearTimeout(timer);
timer = setTimeout(function(){ callback(element); }, timeout);
};
}
function checkTextArea(textarea) { /* moved from global to argument */
if (textarea.value /* ... */) {
/* ... */
}
}
setPauseTimer(document.getElementById('textarea'), 5000, checkTextArea);
Nguồn
2009-01-17 07:37:17
Rất tiếc, tôi không thể, vì đó là một phần của chính sách của công ty. Điều đó làm phức tạp vấn đề, vâng, nhưng tôi đã hy vọng ai đó có thể đã tìm ra một giải pháp chung. – aditya
Do chất lượng ứng dụng trên điện thoại di động phụ thuộc rất nhiều vào việc quản lý tổ hợp phím tắt, tôi sẽ cố gắng tránh hẹn giờ vv - mắt của người dùng thường được dán chặt vào sự tương tác giữa màn hình và bàn phím. Bạn có thể khái quát một cái gì đó và đăng nó? – dkretz