Skip to content

頁首搜尋框在「課程」以外的分頁沒有任何回饋,Enter 落空,但內容已被篩過 #4

Description

@fringmin

環境

main @ 0c327f7courses/gym,Chromium 141.0.7390.37 headless,1280×900。

現象

搜尋框在頁首、每個分頁都看得見,但結果只畫在「課程」分頁裡。

停在首頁或立場頁打字,畫面完全沒有變化;按 Enter 也沒有任何事發生。
使用者放棄搜尋、之後點進「課程」分頁時,才發現內容已經被那次看不見的輸入篩過了,
看起來像是分頁自己壞掉。

重現與實測

?tab=home 進站,在頁首搜尋框輸入「深蹲」:

檢查點 結果
搜尋框在首頁可見 true
打字後所在分頁 home(沒有變化)
打字後 #main 可見 false(結果畫在看不見的地方)
按 Enter 後所在分頁 home(Enter 沒有任何行為)
之後點「課程」分頁:可見單元 23 / 全部 44

最後一列是重點:使用者以為搜尋沒作用,結果換分頁時內容已經少了一半。

根因

app.js:516-523 的 input handler 只做 applyFilters(),不管目前在哪個分頁; 也沒有 keydown handler,所以 Enter 落空。搜尋框的 DOM 位置(index.html:79 在 header 內)意味著它是全站層級的控制項,但它作用的對象只在一個分頁裡渲染。

我的修法

打字與 Enter 都把人帶到結果所在的分頁

const revealResults = () => {  if (state.query.trim() && state.tab !== "course") setTab("course");};searchInput.addEventListener("input", () => {    revealResults();  });// 這個搜尋是邊打邊篩,本來就沒有「送出」;但使用者會按 Enter,// 什麼都不做會被讀成故障。讓它做唯一合理的事:把結果帶到眼前。searchInput.addEventListener("keydown", (e) => {  if (e.key !== "Enter") return;  e.preventDefault();  revealResults();  applyFilters();  searchInput.blur();});

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions