У меня есть функция, которая ждет, пока пользователь нажмет на ввод текста, а затем ждет, пока пользователь нажмет клавиши со стрелками вниз и вверх. Когда пользователь нажимает клавиши со стрелками вниз и вверх, вызывается функция hoverDown(), которая по существу программно наводит курсор на строки таблицы. Когда нажата клавиша Enter, вызывается window.location и загружается соответствующая страница. Проблема в том, что я использую pjax во всем своем приложении для динамической загрузки контента и отправки нового URL без обновления страницы. Когда я вызываю функцию window.location, pjax больше не работает, но вместо этого загружается правильный URL-адрес и происходит полное обновление страницы - именно этого я пытаюсь избежать. Есть ли способ программно вызвать и выполнить pjax из моей функции? Соответствующий код:
//HTML
<div id="main">
<input type="text" class="table-search" id="search" autocomplete="off" placeholder="Search Clients..." /><table class="table" id="tblData">
<thead><tr><th>Name</th> <th>Title</th></tr></thead>
<tbody id="tblDataBody">
<tr><td><a href="http://lar.loc/cases">Scott</a></td> <td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Billy</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">George</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Sara</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">John</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Megan</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Ben</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Jully</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Bethany</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Alen</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Jane</a></td><td>Client</td></tr>
<tr><td><a href="http://lar.loc/cases">Alice</a></td><td>Client</td></tr></tbody></table>
</div>
//Джаваскрипт
$(document).ready(function(){
$("#main").on("keydown", "#search", hoverDown);
});
function hoverDown(e) {
var $tbl = $('#tblDataBody');
var $cur = $('.active', $tbl).removeClass('active').first();
if (e.keyCode === 40) { //down
if ($cur.length) {
$cur.next().addClass('active');
} else {
$tbl.children().first().addClass('active');
}
} else if (e.keyCode == 38) { //up
if ($cur.length) {
$cur.prev().addClass('active');
} else {
$tbl.children().last().addClass('active');
}
} else if (e.keyCode == 13) {
if ($cur.length) {
window.location = $cur.find("a").attr("href");
}
}
}
//Для полноты CSS:
.active {
background-color: yellow;
}
Если вы хотите увидеть этот код в действии, чтобы лучше понять его, вы можете проверить это jsFiddle.
И снова я пытаюсь использовать pjax для загрузки контента.