Tôi tìm thấy câu trả lời từ Glenn Slaven và từ Kris/Alex để làm cho tôi gần gũi hơn với một giải pháp cho vấn đề cụ thể của tôi với thiết tập trung vào một điều khiển ASP.NET TextBox rằng đã có một AutoCompleteExtender đính kèm. Các document.getElementById (focusControlID) .focus() tiếp tục ném một lỗi javascript ngụ ý document.getElementById đã trở về một đối tượng null. Biến focusControlID đã trả về giá trị ClientID đúng thời gian chạy cho điều khiển TextBox. Nhưng vì lý do gì đó, hàm document.getElementById không thích nó.
Giải pháp của tôi là ném jQuery vào hỗn hợp, vì tôi đã sử dụng nó để vẽ nền của bất kỳ điều khiển nào đã tập trung, cộng thêm phím Enter để chuyển qua biểu mẫu thay vì kích hoạt đăng lại.
My SetFocus chức năng đã kết thúc như thế này:
function setFocus(focusControlID) {
$('#' + focusControlID).blur();
$('#' + focusControlID).focus();
}
này đã thoát khỏi những lỗi thời gian chạy javascript, đặt trọng tâm vào các TextBox kiểm soát mong muốn, và đặt con trỏ trong tầm kiểm soát là tốt.Nếu không có mờ đầu tiên sau đó tập trung, kiểm soát sẽ được đánh dấu như thể nó đã tập trung, nhưng con trỏ sẽ không được ngồi trong kiểm soát được nêu ra. Người dùng sẽ vẫn phải nhấp vào bên trong bộ điều khiển để bắt đầu chỉnh sửa, điều này sẽ gây phiền toái cho UX.
Tôi cũng đã phải tăng thời gian chờ từ 100 đến 300. dặm của tôi khác nhau ...
Tôi đồng ý với tất cả mọi người rằng đây là một hack. Nhưng từ quan điểm của người dùng cuối, họ không thấy mã này. Các hack cho họ là nếu họ phải tự bấm vào bên trong kiểm soát thay vì chỉ được tự động đặt bên trong kiểm soát đã và gõ vài chữ cái đầu tiên để kích hoạt chức năng tra cứu tự động. Vì vậy, mũ ra cho tất cả những người cung cấp hack của họ.
Tôi hy vọng điều này hữu ích cho người khác.
Nguồn
2010-03-23 16:14:36
+1 để thừa nhận đó là một bản hack :) – edosoft