在 JSP 分頁功能中,使用 `document.getElementById("cp").value = num` 設置隱藏域值,點擊「首頁/上一頁/下一頁」按鈕提交表單,但後台始終接收不到頁碼,默認跳轉第一頁。根因極其隱蔽:**隱藏域缺少 `name` 屬性**。
<form name="spform" action="<%=URL%>" method="post">
<input type="button" value="首頁" onclick="go(1)">
<input type="button" value="上一頁" onclick="go(<%=currentPage-1%>)">
<input type="button" value="下一頁" onclick="go(<%=currentPage+1%>)">
<input type="button" value="尾頁">
<!-- 關鍵錯誤:只有 id,沒有 name -->
<input type="hidden" id="cp" value="1">
</form>
HTML 表單提交時,**只有擁有 `name` 屬性的表單控件** 其數據才會被打包發送到服務器。`id` 僅用於客戶端 DOM 操作(如 `getElementById`),不參與表單提交。因此後台收不到 `cp` 參數,使用默認值 `1`。
<!-- 添加 name="cp" -->
<input type="hidden" id="cp" name="cp" value="1">
<script>
function go(num) {
// 邊界保護
var maxPage = <%=pagenumber%>;
if (num < 1) num = 1;
if (num > maxPage) num = maxPage;
document.getElementById("cp").value = num;
document.spform.submit();
}
</script>
<form name="spform" action="<%=URL%>" method="post">
<button type="button" onclick="go(1)">首頁</button>
<button type="button" onclick="go(<%=currentPage-1%>)">上一頁</button>
<button type="button" onclick="go(<%=currentPage+1%>)">下一頁</button>
<button type="button" onclick="go(<%=pagenumber%>)">尾頁</button>
<input type="hidden" id="cp" name="cp" value="1">
</form>
加上 `name` 屬性,分頁跳轉即刻生效。