2009-01-05 30 views
15

Có cách nào tốt, trong trình xử lý javascript onfocus(), để trampoline tập trung vào mục tiếp theo trong thứ tự tab, mà không phải nhập thủ công ID của mục cần được tiếp theo?Làm cách nào để bỏ qua các mục khi tabbing mà không sử dụng tabindex?

Tôi đã tạo bộ chọn ngày HTML trong Django/jQuery. Đó là một chỉnh sửa dòng theo sau là biểu tượng lịch bật lên lịch. Tôi muốn có thể tab từ chỉnh sửa dòng sang đầu vào tiếp theo, bỏ qua liên kết cho biểu tượng lịch. Tôi có nghĩa là cho nó là một widget tổng quát, vì vậy tôi không thể hardcode id của bất cứ điều gì là tiếp theo và gọi .focus(). Tôi biết tôi có thể thiết lập thuộc tính tabindex trên tất cả mọi thứ, nhưng đó là hướng dẫn sử dụng nhiều hơn tôi muốn. Ngoài ra, iirc, điều đó sẽ không ngăn nó lấy trọng tâm, nó sẽ chỉ đặt nó vào cuối thứ tự tab.

Trả lời

2

Có thể:

$("#your-calendar-icon").focus(function() { 
    $(this).trigger("blur"); 
); 
+1

Điều này không bỏ qua tiêu điểm, nó đặt lại nó để khi tab được nhấn tiếp theo, nó sẽ chọn phần tử đầu tiên trên trang – wnbates

0

Sử dụng một div xung quanh biểu tượng lịch thay vì một liên kết. Sau đó đính kèm các sự kiện lịch của bạn vào div. Theo mặc định, div sẽ không phải là điểm dừng tab.

2

hay:

$("#your-calendar-icon").focus(function() { 
    $(somethingElse).trigger("focus"); 
}); 
0

Nếu nó luôn luôn sẽ là đầu vào sau khi lịch thì tại sao không:

$('#your-calendar-icon').focus(function() { 
    $(this).next('input').focus(); 
}); 

Cá nhân, tôi muốn nói rằng nếu đó sẽ là một plugin, bạn chỉ cần tạo phần tử tiếp theo là tùy chọn cấu hình có mặc định và chỉ định mặc định trong tài liệu.

27

Đặt tabindex = "-1" cho điều khiển và trình duyệt đó sẽ bỏ qua điều khiển đó từ tabbing.

+1

Tác phẩm này hoạt động nhưng không hợp lệ. Người xác thực là cáu kỉnh. Có cách nào đơn giản để hợp lệ không? http://www.w3.org/TR/html401/interact/forms.html#adef-tabindex. "Giá trị này phải là một số từ 0 đến 32767". – dfrankow

+5

Dường như hoạt động trên FF10 và IE9 ít nhất. @dfrakow, có vẻ như đây là một tiêu chuẩn defacto. Xác thực được damned ... – mlissner

+0

Tôi thích giải pháp này :) – alemur

0

Như @thetacom nói, bạn chỉ có thể sử dụng một loại phần tử khác, một yếu tố không nhận được tiêu điểm. Trong trường hợp bạn vẫn muốn giữ một số chức năng tab, bạn có thể thử SkipOnTab.

SkipOnTab: Một plugin jQuery để miễn các trường biểu mẫu được chọn từ thứ tự tab chuyển tiếp.

Chỉ cần thêm data-skip-on-tab="true" vào biểu tượng bộ chọn ngày (hoặc các thành phần/vùng chứa khác) mà bạn muốn bỏ qua. Bạn vẫn có thể nhấp để kích hoạt công cụ chọn ngày hoặc quay lại bằng cách sử dụng shift - tab và sử dụng phím enter.

Xem the simple demothe business case demo.

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