需求:輸入框驗證是否為特定漢字「學」,原始碼嘗試用 %E5%AD%A6 (UTF-8 URL 編碼) 比對,導致永遠不相等。
<input id="cdemo" type="text">
<button onclick="check()">檢查</button>
<script>
function check() {
var val = document.getElementById("cdemo").value;
if (val === "學") { // 直接用字元字面值比對
alert("GO ON");
} else {
alert("請輸入「學」");
}
}
</script>
value 取得的是**已解碼的 Unicode 字串**,非 URL 編碼。"%E5%AD%A6" 是 6 字元字串 %E5...,與單字元 "學" 完全不同。encodeURIComponent,先用 decodeURIComponent 還原再比對。const ok = new Set(["學", "習", "中", "文"]);
if (ok.has(val)) alert("GO ON");
**直接比對字元**是最簡單、最高效、最不易出錯的方式。