2011-10-31 40 views
33

Tôi có hộp thoại jquery ui với các tab được tải động/JSON với nội dung. Do sự phức tạp, tôi không thể thực sự đăng một đoạn mã hay một mã có liên quan (quá nhiều mã).Xóa tiêu điểm theo chương trình?

Điều đang xảy ra là khi hộp thoại mở ra, bạn có thể tab qua các phần tử trong hộp thoại, tối đa tab đầu tiên. Sau đó, bạn không thể chuyển sang bất kỳ nơi nào khác. Tiêu điểm bị khóa trên tab đó, ngay cả khi bạn nhấp vào nơi khác, tiêu điểm đó sẽ bị khóa trên tab đó.

Tôi không thể xác định nguyên nhân thực sự của vấn đề này.

Vì vậy, làm cách nào để xóa tiêu điểm theo chương trình?

+0

Bạn đang sử dụng trình duyệt nào? Trong IE, đôi khi bạn mất tập trung không có lý do chính đáng. – Hossein

+0

Sự kiện nhấn phím cho TAB có được ghi đè để quản lý theo cách thủ công việc chuyển đổi tiêu điểm (có thể thực hiện khi hiển thị hộp thoại phương thức) không? –

+0

nơi duy nhất tôi thấy sự kiện nhấn phím là chức năng khóa phím để có thể nhấn mũi tên xuống vào nội dung của tab. Và nó trên tất cả các trình duyệt. – Jason

Trả lời

55

này có thể giúp ...

http://api.jquery.com/blur/

$('#tabName').blur(); 
+1

Đây là câu trả lời đúng, tuy nhiên tôi không nói/giải thích rõ ràng tình huống của tôi. Tôi sẽ cập nhật cho phù hợp. cảm ơn. – Jason

+3

Điều này làm việc tuyệt vời và giải quyết một vấn đề tương tự như tôi đã có. Một thay đổi nhanh chóng tôi muốn giới thiệu, nếu bạn đang sử dụng jQuery và cần áp dụng một cách tổng quát cho một phạm vi các sự kiện, bạn có thể làm một cái gì đó như sau: '$ (document.activeElement) .blur()' - bất cứ điều gì đang hoạt động sẽ mất tập trung tại thời điểm diễn ra sự kiện. – Markus

+2

Làm cách nào để làm điều đó với JavaScript thuần túy? – AmerllicA

0

Tôi đặt trong một loạt cảnh báo để tìm nơi JS bị lỗi. Ví dụ.

alert(1); 
var a = 10; 
alert(2); 
var b = null; 
alert(3); 
a += 5; 
alert(4); 
b.hello(); 
alert(5); 

Rõ ràng trong ví dụ này cảnh báo cuối cùng sẽ là 4.

Nó không phải là một phương pháp tốt đẹp, nhưng mọi người đều có để làm điều đó tại một số điểm.

+9

Cảnh báo không phải là một cách thích hợp để gỡ lỗi, đặc biệt nếu nó phản ứng với mousemove, di chuột hoặc các sự kiện tương tự. Hầu như mọi trình duyệt đều có một bàn điều khiển gỡ lỗi ngày nay mà bạn có thể viết để sử dụng 'console.log (...);' – ThiefMaster

+6

Cách thích hợp để gỡ lỗi là điều giúp bạn theo dõi một lỗi theo cách hiệu quả nhất. Cảnh báo có vai trò rất hữu ích trong việc gỡ lỗi vì chúng tạm dừng thực thi. Mới hôm qua tôi đã gỡ lỗi một hình ảnh động jQuery đáng lo ngại và 'console.log()' là vô dụng để xác định nơi mà trục trặc thị giác này đến từ đâu, bởi vì nó xảy ra quá nhanh. Việc thêm vào cảnh báo đã tạm dừng hoạt ảnh ở mỗi bước và cho phép tôi tìm chính xác nơi bắt nguồn gốc. Bạn nói đúng rằng phương thức OPs không phải là cách thích hợp, và 'console.log()' là tốt hơn trong trường hợp đó, nhưng 'alert()' có một chỗ trong gỡ lỗi. – Gavin

+1

@Gavin và nghỉ ngơi. Tốt hơn nên sử dụng lệnh 'debugger' (ít nhất là trong các trình duyệt hỗ trợ nó). Nó tạm dừng thực thi, nhưng vẫn cho phép bạn sử dụng các công cụ phát triển của bạn để kiểm tra những gì đang xảy ra. Với cảnh báo, tất cả những gì bạn nhận được là ảnh chụp nhanh của trạng thái hiện tại, không phải lúc nào cũng hữu ích. – stafffan

2

Hãy thử kích hoạt một sự kiện blur trên các lĩnh vực bạn muốn mất tập trung.

Các vấn đề liên quan