軟體授權金鑰常採「五組五碼」格式(如 `AAAAA-BBBBB-CCCCC-DDDDD-EEEEE`)。本文示範純前端 JavaScript 實現:使用者輸入滿 5 碼自動游標跳至下一個 TextBox,最後一組限制長度,送出時由伺服器端驗證。
<script type="text/javascript">
// 當前輸入框滿 5 碼自動焦點移至下一個
function JumpToNextTextBox(currentTxtBox, nextTextBoxID) {
if (currentTxtBox.value.length >= 5) {
document.getElementById(nextTextBoxID).focus();
}
}
</script>
<!-- License Key 輸入區 -->
License Key:
<asp:TextBox ID="Number1" runat="server" Width="65"
onkeyup="JumpToNextTextBox(this, 'Number2')" MaxLength="5" /> -
<asp:TextBox ID="Number2" runat="server" Width="65"
onkeyup="JumpToNextTextBox(this, 'Number3')" MaxLength="5" /> -
<asp:TextBox ID="Number3" runat="server" Width="65"
onkeyup="JumpToNextTextBox(this, 'Number4')" MaxLength="5" /> -
<asp:TextBox ID="Number4" runat="server" Width="65"
onkeyup="JumpToNextTextBox(this, 'Number5')" MaxLength="5" /> -
<asp:TextBox ID="Number5" runat="server" Width="65" MaxLength="5" />
<br />
<asp:Button ID="BtnVerify" Text="驗證" OnClick="BtnVerify_Click" runat="server" />
<asp:Label ID="LblResult" runat="server" />
| 屬性/事件 | 用途 |
|---|---|
MaxLength="5" | 限制每組最多 5 碼,防止輸入過長導致跳欄邏輯失效。 |
onkeyup="JumpToNextTextBox(this, '下一個ID')" | 每次按鍵釋放檢查長度,滿 5 碼呼叫 `focus()` 移至下一個輸入框。 |
ClientIDMode="Static" | (建議加上)確保 `document.getElementById('Number2')` 能正確找到元素,避免 ASP.NET 自動產生的 `ctl00_...` 前綴干擾。 |
| 最後一組無 `onkeyup` | 無下一個欄位,無需跳轉。 |
protected void BtnVerify_Click(object sender, EventArgs e)
{
// 組合完整 Key
string key = string.Join("-",
Number1.Text, Number2.Text, Number3.Text, Number4.Text, Number5.Text);
// 移除連字號進行演算法驗證(範例:簡單長度檢查)
string raw = key.Replace("-", "");
if (raw.Length == 25 && IsValidLicense(raw))
{
LblResult.Text = "授權碼驗證通過!";
LblResult.ForeColor = System.Drawing.Color.Green;
// 寫入授權檔、解鎖功能...
}
else
{
LblResult.Text = "授權碼無效,請重新輸入。";
LblResult.ForeColor = System.Drawing.Color.Red;
}
}
private bool IsValidLicense(string rawKey)
{
// 實際應用:解密、檢查簽章、過期日、硬體指紋綁定等
// 此處僅示範:假設有效 Key 為 25 個大寫字母數字
return System.Text.RegularExpressions.Regex.IsMatch(rawKey, @"^[A-Z0-9]{25}$");
}

純前端 JavaScript 即可實現 License Key 分段輸入自動跳欄,配合 `MaxLength`、`ClientIDMode="Static"` 確保相容性。核心驗證邏輯放在伺服器端,確保安全性。此模式廣泛應用於軟體授權、序號兌換、驗證碼輸入等場景。