跳至內容
Astera Technology

必選清單的提示項,不能當成答案

清單初始提示用空值,讓原生核對分得出「未選」與已揀主題。

提示項不是已填答案;揀主題後可查看原生有效狀態。

下載完整個案資料及參考答案 ↓

先看這個例子

這個單選清單是必填。第一項起初已選,但只是提示,value=""。「HTML 結構」和「版面配置」才有實際值。毋須送出表單,也毋須網絡請求,便可核對原生 validity。

輸入與瀏覽器原生結果
情況輸入或查看方法結果與意思
起初提示讀取 select.value 和 validity.valueMissing值空白;valueMissing=true
揀 HTML 結構選值 htmlvalue=html;validity.valid=true
揀版面配置選值 cssvalue=css;validity.valid=true
下載可編輯 CSV ↓

瀏覽器怎樣處理

這個 select 是必填、非多選,而且顯示為單行;第一個直接子 option 的空值項是提示選項。仍選提示時,控制項欠值;揀有值的實際選項後,欠值狀態才消失。下拉視窗的樣式依瀏覽器和作業系統而定。

提示項有了非空值,就可能被當成已填

反例把提示項的 value 設為 choose。文字仍叫人選主題,控制項卻已有非空選取值。

反例原始碼,請另開例子核對
<label for="topic">工作坊主題</label><select id="topic" required><option value="choose" selected>請選主題</option><option value="html">HTML 結構</option></select>

反例仍選提示項時,valueMissing=false、valid=true。正例的空值提示則正確表示欠值。

試着修正

第三個實際選項叫「沒有偏好」,本意是完整答案,應否也用空值?

查看參考答案

應用不同的非空值,例如 any。本例空值留給未選提示。只靠顯示文字,原生 validity 分不清這兩種意思。

  • 揀實際項目前後,各查一次 validity。
  • 核對值和標籤,不假定各系統選單外觀相同。

原始例子檔案

相關資源