Tôi đang hiển thị kết quả tìm kiếm với một bảng. Mỗi kết quả có một nút để người dùng nhấp vào để hiển thị đầy đủ chi tiết của nó. Đó là hoạt động tốt.Làm cách nào để liên kết phím mũi tên lên và xuống để cho phép điều hướng qua các hàng trong bảng?
Điều tôi cũng muốn là có thể điều hướng kết quả tìm kiếm bằng cách sử dụng mũi tên lên và xuống của bàn phím.
Bây giờ, người dùng phải nhấp vào nút Select
hoặc tab đến nút và nhấn space bar
.
Tôi cho rằng tôi có thể bẫy sự kiện không hoạt động và sau đó tìm thấy sự kiện trước hoặc sau mà tôi cần chọn và sau đó đặt nó, nhưng có vẻ như rất nhiều công việc. Tôi tự hỏi nếu có một cách tốt hơn để làm điều đó?
javascript
var myModel = new function() {
var self = this;
self.selectedResult = ko.observable(new MyObj());
self.searchResults = ko.observableArray();
self.navUpDown = function (item, evt) {
if (evt.keyCode == 38) { // up
var id = item.ID();
// find previous one and set selectedResult
}
if (evt.keyCode == 40) { // down
var id = item.ID();
// find next one and set selectedResult
}
};
};
html
<table class="table">
<thead>
<tr>
<th> </th>
<th>table header 1</th>
<th>table header 2</th>
</tr>
</thead>
<tbody data-bind="foreach: searchResults">
<tr data-bind="css: { 'btn-info': $parent.selectedResult() == $data }, event: { keyup: $parent.navUpDown } ">
<td>
<button class="btn btn-small" data-bind="click: $parent.selectResult">Select</button>
</td>
<td data-bind="text: data1"></td>
<td data-bind="text: data2"></td>
</tr>
</tbody>
</table>
Việc tìm kiếm trước đó và kế tiếp không khó chút nào. một cái gì đó như $ (this) .nextSibling() & $ (this) .prevSibling() nên làm những gì bạn cần. – Johan