Tôi đang viết một bài kiểm tra đơn vị để kiểm tra thứ tự tab trên trang web của mình và tôi không thể tìm cách mô phỏng khóa của người dùng xuống của khóa TAB để tập trung vào phần tử có thể lấy tiêu điểm tiếp theo, mặc dù điều này có vẻ là một nhiệm vụ dễ dàng.Có cách nào để kích hoạt phím TAB theo chương trình để di chuyển tiêu điểm đến phần tử có thể lấy tiêu điểm tiếp theo không?
jQuery được phép trong khi giải pháp javascript thuần túy được ưu tiên. Bất kỳ loại trợ giúp nào đều được đánh giá cao.
// TODO
function triggerTab() {
}
$("#btn-save").focus();
triggerTab();
// Expect the focus is on the cancel button now.
console.log(document.activeElement.id);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> some text </p>
<button id="btn-save"> save </button>
<button id="btn-cancel> cancel </button>
T.B. Không thể chấp nhận gọi focus() trên phần tử có thể lấy nét tiếp theo, ngay cả khi bạn có thể viết mã để tìm ra phần tử có thể lấy tiêu điểm tiếp theo. Vì vậy, con đường này là KHÔNG những gì tôi muốn:
function getAllFocusables() {
...
}
var focusables = getAllFocusables(),
index = focusables.indexOf(document.activeElement);
$(focusables[index+1]).focus();
Không có không phải là một cách để kích hoạt các phím tab, nhưng có một cách để tìm phần tử có thể tập trung tiếp theo trong DOM và tập trung vào nó. Có lẽ bất cứ điều gì bạn đang sử dụng để kiểm tra đơn vị này, có một cách để kích hoạt các phím, tôi không biết, tôi không bao giờ đơn vị kiểm tra xử lý sự kiện đơn giản? – adeneo
Tại sao bạn KHÔNG muốn sử dụng phương pháp đơn giản hơn để tập trung những gì bạn muốn trực tiếp. – vlaz
@vlaz Bởi vì điều này là để kiểm tra đơn vị của một mô-đun trong dự án của tôi, mô-đun có mã js để quản lý thứ tự tab bằng cách sử dụng ý tưởng giống như những gì tôi đặt ở cuối câu hỏi. Tôi nghĩ rằng nó là ngớ ngẩn để sử dụng mã của cùng một mô-đun để kiểm tra chính nó. Đây là lý do tại sao tôi muốn thử nghiệm theo cách này, thiết lập đánh dấu, lập trình kích hoạt các tab và kiểm tra xem thứ tự tab có như mong đợi hay không. –