Bạn có thể sử dụng Javascript và nắm bắt sự kiện "keydown" trên phần tử có "tabindex" cao nhất. Nếu người dùng nhấn phím "TAB" (event.keyCode == 9) mà không có phím "Shift" (event.shiftKey == false) thì chỉ cần đặt trọng tâm vào phần tử có tabindex thấp nhất.
Bạn cũng sẽ cần phải làm điều tương tự ngược lại đối với phần tử có tabindex thấp nhất. Chụp sự kiện "keydown" cho phần tử này. Nếu người dùng nhấn phím "TAB" (event.keyCode == 9) VỚI phím "Shift" (event.shiftKey == true) thì đặt tiêu điểm vào phần tử có tabindex cao nhất.
Điều này có hiệu quả sẽ ngăn chặn thanh địa chỉ không bao giờ được tập trung bằng cách sử dụng khóa TAB. Tôi đang sử dụng kỹ thuật này trong dự án hiện tại của mình.
Đừng quên hủy sự kiện nhấn phím nếu nhấn tổ hợp phím thích hợp! Với JQuery đó là "event.preventDefault()". Trong Javascript chuẩn, tôi tin rằng bạn chỉ đơn giản là "trả về false".
Dưới đây là một đoạn JQuery-laden Tôi đang sử dụng ...
$('#dos-area [tabindex=' + maxTabIndex + ']').on('keydown', function (e) {
if (e.keyCode == 9 && e.shiftKey == false) {
e.preventDefault();
$('#dos-area [tabindex=1]').focus();
}
});
$('#dos-area [tabindex=1]').on('keydown', function (e) {
if (e.keyCode == 9 && e.shiftKey == true) {
e.preventDefault();
$('#dos-area [tabindex=' + maxTabIndex + ']').focus();
}
});
Cũng nên nhớ rằng việc thiết tabIndex = 0 có kết quả không mong muốn vào thứ tự mà mọi thứ đang tập trung. Tôi luôn luôn nhớ (cho mục đích của tôi) rằng tabindex là một chỉ số dựa trên 1.
Nguồn
2014-08-23 17:19:59
Tôi sẽ để lại nó một mình . Một giải pháp đơn giản là làm cho ứng dụng của bạn khởi động trong cửa sổ bật lên. Sau đó, bạn có thể ẩn trường địa chỉ thông qua 'location = no'. –