Tôi muốn có thể điều hướng qua tất cả các yếu tố có thể đặt tiêu điểm trên trang web của mình bằng phím mũi tên. Vì vậy, khi nhấn phím xuống, tiêu điểm sẽ chuyển sang phần tử có thể lấy nét bên dưới phần tử tập trung hiện tại. Bạn có ý tưởng cho các phím mũi tên khác, khi không có một yếu tố có thể tập trung để chuyển sang, tiêu điểm phải giữ nguyên.Thay đổi tiêu điểm bằng các phím mũi tên trong JavaScript
Đây là những gì tôi có cho đến nay:
$(document).keydown(function(e){
if (e.keyCode == 37) { //left
var offset = $("*:focus").offset();
var allElements = $("#container").find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]');
var arr = jQuery.makeArray(allElements);
var topLeft = offset.left
var minus = topLeft;
var currentElement = $("*:focus");
for(var i = 0; i < arr.length; i++)
{
if ((arr[i].offset().left < offset.left) // This doesn't work for some reason
&& ((offset.left - arr[i].offset().left) < minus))
{
currentElement = arr[i];
minus = offset.left - arr[i].offset().left;
topLeft = arr[i].offset().left;
}
currentElement.focus();
}
alert("left pressed");
return false;
}
// Other Keys
});
ý tưởng là lấy tất cả các yếu tố có thể tập trung và chọn chọn một yếu tố phù hợp cho mũi tên và tiêu điểm dịch chuyển.
Tôi không thể làm cho mã này hoạt động (có chứa lỗi) và tôi không hoàn toàn chắc chắn mã này sẽ hoạt động.
Thnx trước
[EDIT]: Tôi đoán tôi hơi mơ hồ. Tôi không chỉ muốn đi bên trái và bên phải, mà còn lên xuống.
Vì vậy, bạn muốn để phá vỡ những gì các phím mũi tên thường làm (di chuyển trang theo các hướng khác nhau) ngay trên trang của bạn, mặc dù các phím khác (tab và shift-tab) đã thực hiện công việc? Vì lợi ích của người dùng, tôi hy vọng bạn đang xây dựng một bảng tính, bởi vì tôi không thể thấy đây là một ý tưởng hay vào bất kỳ lúc nào khác. – Blazemonger
Tôi nghĩ rằng tệ nạn tệ hơn là sử dụng phím trái và phải thay vì mũi tên lên và xuống. Imgur làm tốt công việc này. – pixelbobby
@Blazemonger Tôi không chắc chắn về những gì OP muốn, nhưng Tab và Shift-Tab không đi theo hướng Lên-Xuống-Phải-Trái, nhưng theo một cách tuyến tính ... – jadkik94