2011-07-29 30 views

Trả lời

9

Tôi nghĩ, đó là vì sau khi bạn đóng hộp thoại (hộp cảnh báo), tiêu điểm sẽ trả về trên hộp văn bản, do đó, chức năng sẽ kích hoạt lại.

+0

Hmm cảm ơn câu trả lời của bạn. Xem ở đây để biết vấn đề thực sự của tôi http://stackoverflow.com/questions/6869717/google-chrome-infinite-loops-and-selecting-text – ajbeaven

+0

Để người khác xem xét vấn đề này, nếu bạn đang gỡ lỗi, hãy sử dụng 'console.log' thay vì hiển thị một phương thức cảnh báo vì điều này sẽ giải quyết được các vấn đề tôi đã gặp ở trên. – ajbeaven

5

Tôi nghĩ rằng đó là do trình duyệt đang gửi trọng tâm từ cảnh báo đến trường văn bản của bạn mỗi khi bạn nhấp vào nút "OK" của cảnh báo. Có thể bạn sẽ không xuất hiện cảnh báo (methinks) trong phiên bản cuối cùng của mã, vì vậy đây có thể không phải là vấn đề về lâu dài.

+2

+1 thay vì cảnh báo, tôi thường thêm một div bổ sung trên trang (đôi khi vị trí tuyệt đối) và chỉ thêm thông điệp vào div đó ví dụ '$ (" # myMessageDiv ") append (messageString +"
");' –

+1

Tôi làm điều tương tự - ít xâm lấn hơn cảnh báo khi đang phát triển :) – Pwninstein

+2

Tôi thích console.log, nó có thể xử lý bất kỳ loại nào. – Wylie

2

Sự cố là alert() lấy cắp tiêu điểm từ hộp nhập và sau đó khôi phục nó khi hộp thoại đóng. Bạn có thể sửa lỗi này bằng cách xóa tiêu điểm khỏi hộp nhập trước khi bạn hiển thị cảnh báo.

Ví dụ: http://jsfiddle.net/XppG9/6/

+0

Tôi nghĩ rằng điều này không giải quyết được vấn đề của mình, người dùng sẽ nhận được lời nhắc mỗi khi anh ấy tập trung vào hộp văn bản, sau đó anh ấy sẽ trả lời. Người dùng có thể sẽ vào hộp văn bản một lần nữa để nhập, một lời nhắc sẽ xuất hiện trở lại. – dpp

+0

@domanokz - Đúng, điều này chỉ loại bỏ vòng lặp vô hạn. Nó không có gì để loại bỏ các vấn đề khả năng sử dụng gây ra bởi popping lên một cảnh báo bất cứ khi nào một lĩnh vực đạt được tập trung. – aroth

1

này đang xảy ra bởi vì nó được thiết lập tập trung trở lại vào hộp văn bản. Hãy thử điều này cần làm việc tốt trong Chrome

$('input[type="text"]').live('focus', function(event) { 
    alert('in'); 
    $(this).blur(); 
}); 
0

Bởi vì cảnh báo là nhận được sự tập trung từ hộp văn bản của bạn, và trên đóng hộp thoại cảnh báo, tập trung sẽ trở lại. Nếu bạn thực hiện bất kỳ cơ chế không tập trung nào bên trong chức năng của mình, nó sẽ chỉ kích hoạt một lần: http://jsfiddle.net/G8CmV/

<input type="text" /> 
<div id='tester'>Test:</div> 



$('input[type="text"]').live('focus', function(event) { 
    $('#tester').html($('#tester').html() + "_*"); 
    }); 
Các vấn đề liên quan