pupadupa
(K Kabanov)
July 13, 2011, 4:21pm
1
Привет.
Подскажите, пожалуйста, как сделать, чтобы листалка (paginator) срабатывала при нажатие ctrl+[стрелка влево/вправо] и соответственно, осуществлялся переходил на страницу вперёд/назад?
Понял, что нужно использовать:
$(document).keydown(function(e){
if (e.keyCode == ... ) {
// получить url и сделать редирект
return false;
}
});
Но:
какой код у сочитаний ctrl+left/right
как получить url следующей страницы и предыдущей (и нужно понимать, когда таких страниц нет, чтобы не делать лишний редирект)?
Использую виджет CLinkPager
<?php
$this->widget('CLinkPager', array(
'pages' => $pages,
'header' => false,
'nextPageLabel' => '»',
'prevPageLabel' => '«',
))
?>
Спасибо!
madand
(Dev Madand)
July 15, 2011, 2:23pm
2
Сначала задайте пагинатору свойство CLinkPager::id (в примере id="pagerID"). Далее используйте приведенный код:
$(document).ready(function(){
$(document).focus();
var isCtrl = false;
function processRedirect(linkClass) {
var linkHolder = $("#pagerID li."+linkClass);
if ( !linkHolder.hasClass("hidden") ) {
window.location.replace( linkHolder.children('a').attr('href') );
}
}
$(document).keyup(function (e) {
if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
if(e.which == 17) isCtrl=true;
if(e.which == 37 && isCtrl == true) {
//run code for CTRL+Left arrow (Prev)
processRedirect("previous");
return false;
}
if(e.which == 39 && isCtrl == true) {
//run code for CTRL+Right arrow (Next)
processRedirect("next");
return false;
}
});
});
pupadupa
(K Kabanov)
July 15, 2011, 4:28pm
3
Спасибо!
Только получается, что если использовать
window.location.replace( linkHolder.children('a').attr('href') );
то кнопка "назад" в браузере будет работать некорректно.
Попробовал вот так, но что-то не работает
function processRedirect(linkClass) {
var linkHolder = $("#PagerID li."+linkClass);
if ( !linkHolder.hasClass("hidden") ) {
//window.location.replace( linkHolder.children('a').attr('href') );
$("#PagerID li."+linkClass+" a").trigger("click");
}
}
madand
(Dev Madand)
July 18, 2011, 3:11pm
4
window.location = linkHolder.children('a').attr('href') ;
Вот так кнопка назад должна заработать
Ekstazi
(Ekstazyst)
July 18, 2011, 8:11pm
5
Можно еще jquery bbq подключить, и контент аякс запросом подгружать, но это сложнее в реализации.