2016-06-28 7 views
1

私は、光沢のあるアプリケーションのデータテーブルがトップにスクロールし、誰かが次のページをクリックした後に要素にフォーカスするようにしています。Shiny Datatables - ページの読み込み後のフォーカス

options=list(pageLength=50, drawCallBack = DT::JS(
     'function (paginateScroll) { 
     $("html, body").animate({ 
      scrollTop: 0 
     }, 300); 
     $("th:first-child").focus(); 
     $(".paginate_button").bind("click", paginateScroll); 
     }' 
    )) 

(理由drawCallBackの)次のコードが動作しているが、問題はそのが描かれたときにフォーカスが動作することで、私は動作するはずページ(https://datatables.net/reference/event/page)と呼ばれるイベントがあります知っているが、私は、ように見えることはできませんコードを正しく取得してください。誰か助けてくれますか?

+0

私はDTの開発版を使用しており、callback = JS( 'table.page( "next")。draw(false);')のような例を試しています。表示されない – KingOfKong

+0

私が何か誤解していない限り、あなたが与えたJSコードは何もしません。 'callback'では、' table.on( "page.dt"、function()....というイベントは、あなたが望むようにページが変更されたときに起こるはずです。 – Carl

答えて

2

あなたの目標はかなりわかりませんが、描画されたときではなく、ページが変更されたときだけJSを実行したいと思っています。ページが変更されたときにのみ実行されるJSがあります。これは役に立ちます:

library(shiny) 
library(DT) 

shinyApp( 
    ui = fluidPage(
    mainPanel(DT::dataTableOutput("test") 
    ) 
), 
    server = function(input, output,session) {  
    output$test <- DT::renderDataTable({ 
     mtcars 

    }, 
    callback=DT::JS(
     'table.on("page.dt",function() { 
     alert("Page has changed"); 
     }) 
     ' 
    ) 
    ) 
    } 
) 
+0

ありがとうございました。私はオプションにコールバックコードを入れていたと思うかもしれませんし、おそらくそれが動作していない理由ですか?実際に私はdatatable関数であるdrawCallbackとコールバック自体の間で混乱しているかもしれません – KingOfKong

関連する問題