2015-12-23 165 views
1

我有一個JSP頁面,其中包含一個搜索字段,並在其下有一個搜索結果表。當用戶按下搜索按鈕時,請求將通過java servlet進行處理,並且該頁面將與表中返回的結果一起重新加載。搜索完成後,我需要頁面在頁面加載後向下滾動到表格。有條件的頁面向下滾動

我研究這個話題,發現這個解決方案

onclick="document.getElementById('searchtable').scrollIntoView();" 

我把這個搜索按鈕,它的工作原理,但按下按鈕時,頁面被重新加載,並重新加載頁面的頂部,開始其是我的問題。

這是我

<div id="searchtable"> 
<table> 
<c:forEach items="${tableheader}"> 
<!-- search results go here --> 
</c:forEach> 

我在想什麼做的是增加一個

<c:if test="${tableheader not equal null}">document.getElementById('searchtable').scrollIntoView();</c:if>

<c:forEach>,但我不知道如何正確地實現這一點。

任何幫助將是偉大的。

+0

被'onclick'分配給按鈕的形式 – Ramanlfc

+0

是的,它是@Ramanlfc – develop1

+0

如果頁面被重新加載並且生成了一個表格,那麼你需要在表格的最後給出一個id和一個#標籤,以帶你到頁面的那一部分。因此,這不是異步操作,那是需要做的。 – SoluableNonagon

回答

1

我假設這是一個普遍的JSP

<form onsubmit='getTable'> 
     <button type='submit'>Get Table</button> 
</form> 

所以當你點擊,頁面重新加載,和一張桌子突然存在,是否正確?

這可以固定JS像這樣:

<script> 
     (function autoScroll(){ 
      document.getElementById('searchtable').scrollIntoView(); 
     })() 
</script> 

或者更確切地說,滾動表中,如果它包含行(用jQuery爲便於)

<script> 
     (function autoScroll(){ 
      if($('#searchtable tbody tr').length > 0){ 
       document.getElementById('searchtable').scrollIntoView(); 
      } 
     })() 
</script> 
+0

您可以添加一個onready函數來確定dom是否準備就緒,但是應該由頁面末尾添加的自動執行函數來覆蓋 – SoluableNonagon