Tôi muốn thiết lập sự kiện onBlur cho yếu tố nhập xác thực giá trị và, nếu không hợp lệ, "hủy bỏ" làm mờ và căn chỉnh đầu vào. Tuy nhiên trả về false từ onBlur không hủy trênBlur cách thức thực hiện với onClick. Có một giải pháp cho điều này (có thể sử dụng jQuery?)Hủy sự kiện onBlur trong JavaScript?
Trả lời
Tôi không biết bất kỳ cách nào đáng tin cậy của trình duyệt chéo để thực hiện việc này. Thường đặt thời gian chờ nhỏ trong sự kiện onblur
và gọi số focus()
khi bộ hẹn giờ kích hoạt.
Ví dụ:
document.getElementById('your_input_id').onblur = function() {
var self = this;
setTimeout(function() { self.focus(); }, 10);
}
Bạn có thể gọi focus()
trong trình xử lý.
Điều này đôi khi sẽ giúp ích.
dường như không hoạt động – JoelFan
Bạn có thể thực hiện điều này bằng cách sử dụng chức năng focus()
jQuery trong một thời gian chờ zero-thứ hai. Dưới đây là ví dụ:
$('#my_input').bind('blur', function(event) {
var $input = $(this);
var is_input_valid = false;
// Code to determine if input is valid
// ...
if (!is_input_valid) {
setTimeout(function() {
$input.focus();
}, 0);
return false;
}
});
hoạt động nhưng nhược điểm là nó chỉ hoạt động cho các phần tử có thẻ "id", và sau đó chỉ khi "id" đó được đảm bảo là duy nhất trên trang – JoelFan
Điểm tốt. Nếu bạn cần phải sử dụng một cái gì đó khác với một ID, sau đó bạn có thể gán 'này' để' var tự' và sử dụng tự trong thời gian chờ đóng cửa gọi lại. – cpburnz
Thời gian chờ "không an toàn" thứ hai mà bạn có thể sử dụng thực sự là khoảng 16ms. Điều này là do sự khác biệt về bộ tính giờ của JavaScript trên các thiết bị/trình duyệt khác nhau. Nếu bạn sử dụng 0 cho thời gian chờ không giây, bạn sẽ thấy rằng mã của bạn đồng bộ, đôi khi. – nhaarman
- 1. CodeMirror onBlur sự kiện và console.log()
- 2. sự kiện hủy tải lên tệp trong javascript
- 3. Làm thế nào để bắt chước sự kiện onBlur của JavaScript trong Windows Forms?
- 4. sự kiện onblur không hoạt động với google chrome
- 5. sự kiện JavaScript onBlur ngăn chặn hình thức HTML từ được gửi
- 6. Hủy bỏ các sự kiện với jquery hoặc javascript
- 7. sự kiện nhấp nút bị mất do hộp cảnh báo trong hộp văn bản onblur sự kiện
- 8. Thực hiện truy vấn cơ sở dữ liệu trên sự kiện Textbox onblur
- 9. Hủy sự kiện báo chí chính
- 10. Hủy bỏ ListBox SelectedIndexThay đổi sự kiện
- 11. Loại bỏ - Hủy sự kiện thay đổi?
- 12. Ứng dụng Qt hủy sự kiện thoát
- 13. nhận sự kiện hủy của Java ProgressMonitor
- 14. "Trên hộp thoại tập tin hủy bỏ" sự kiện trong JavaScript
- 15. Sự kiện JavaScript - OffFocus?
- 16. sự kiện javascript e.which?
- 17. Nơi hủy đăng ký sự kiện trong một UserFind WinForms
- 18. Khi nào cần hủy các sự kiện trong Silverlight
- 19. Làm cách nào để hủy sự kiện bubbling trong ASP.net?
- 20. Ưu tiên sự kiện trong JavaScript là gì?
- 21. Sự kiện nhấn phím tab trong JavaScript?
- 22. kích hoạt sự kiện "dán" trong Javascript
- 23. Sự kiện tuyên truyền trong Javascript
- 24. Sự kiện tùy chỉnh trong HTML, Javascript
- 25. Xem sự kiện javascript trong trình duyệt
- 26. Javascript: Nhiều sự kiện mouseout kích hoạt
- 27. Trình tự sự kiện JavaScript
- 28. Xem nghe sự kiện - Javascript
- 29. Sự kiện chạm ánh xạ JavaScript tới sự kiện chuột
- 30. ASP.NET TextBox Sự kiện LostFocus
Làm cách nào để chuyển phần tử DOM tới trình xử lý thời gian chờ? setTimeout chỉ lấy một chuỗi mã, không phải là một đối tượng – JoelFan
@JoelFan: Bạn có thể chuyển một hàm tới 'setTimeout', xem câu trả lời đã cập nhật của tôi. – casablanca
Thực ra, 'setTimeout' có chức năng. 'setTimeout (function() {...}, 40);' – SLaks