2010-05-24 44 views
5

Tôi đang sử dụng các điều khiển Telerik, cụ thể là hộp văn bản số nơi bạn có thể đặt mũi tên lên xuống để tăng/giảm giá trị trong hộp văn bản. Tôi bắt buộc phải đặt thứ tự tab để chuyển sang trường tiếp theo nhưng vì có nút trên mũi tên lên xuống, trình duyệt sẽ đi qua các nút đó trước rồi chuyển sang trường hộp văn bản tiếp theo.cách đặt thứ tự tab trong jquery

Làm cách nào để đặt jquery để phát hiện trường nhập văn bản/hộp thả xuống/etc có thể nhìn thấy tiếp theo và di chuyển đến đó khi nhấn nút tab thay vì chạy qua các nút gần đó?

Trả lời

4

Bạn thực sự thiết lập điều này với thuộc tính HTML tabindex được sắp xếp tăng dần về số lượng cho tất cả các yếu tố đầu vào trên trang. Vì vậy, để bỏ qua các nút, hãy bắt đầu với đầu vào đầu tiên trên trang gán cho nó tabindex=1, số thứ hai tabindex=2, đặt các đầu vào tiếp theo cho phù hợp. Khi bạn nhận được các nút mà bạn muốn bỏ qua chỉ đơn giản là không cung cấp cho họ một giá trị tabindex, hoặc cung cấp cho họ các chỉ số ở cuối danh sách.

+4

No. Tìm ra thứ tự tab là địa ngục của công việc tốt nhất còn lại cho broswer. Ngoài ra nếu bạn không chỉ định chỉ mục tab, nó sẽ tự động nhận được giá trị. Để thực sự ngăn chặn một phần tử cho thứ tự tab, hãy cho nó một chỉ mục tab trừ 1. Để kích hoạt một phần tử cho thứ tự tab và để cho trình duyệt quyết định chỉ mục tốt nhất, hãy cung cấp cho nó chỉ mục tab bằng 0. –

17
$(function() { 
    var tabindex = 1; 
    $('input,select').each(function() { 
    if (this.type != "hidden") { 
     var $input = $(this); 
     $input.attr("tabindex", tabindex); 
     tabindex++; 
    } 
    }); 
}); 
+0

giải pháp +1 sạch – diEcho

2

Bạn cũng có thể thử này

$('input,select :visible').each(function (i) { $(this).attr('tabindex', i + 1); }); 
1

Đôi khi bạn đang tạo ra mã hoặc sắp xếp lại các yếu tố với jQuery giải pháp là không sử dụng taborder nhưng chỉ cần chắc chắn rằng bạn đặt các yếu tố trong DOM trong đúng thứ tự. Xem ví dụ bên dưới.

JQuery code:: 
var anchorB = jQuery('#anchorB'); 
jQuery('#divB').remove(); 
anchorB.insertBefore("#anchorC"); 


Before:: 
<a id="anchorB" href="#">Anchor B</a> 
<a id="anchorA" href="#">Anchor A</a> 
<a id="anchorC" href="#">Anchor C</a> 

After:: 
<a id="anchorA" href="#">Anchor A</a> 
<a id="anchorB" href="#">Anchor B</a> 
<a id="anchorC" href="#">Anchor C</a> 
Các vấn đề liên quan