隨機生成一個指定長度的驗證碼

王铁柱6發表於2024-12-09
function generateCaptcha(length) {
  let result = '';
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; // 可以根據需要修改字符集
  const charactersLength = characters.length;
  for (let i = 0; i < length; i++) {
    result += characters.charAt(Math.floor(Math.random() * charactersLength));
  }
  return result;
}

// 生成長度為 6 的驗證碼
const captcha = generateCaptcha(6);
console.log(captcha);


//  前端顯示驗證碼
//  假設有一個 id 為 captcha 的元素用於顯示驗證碼
const captchaElement = document.getElementById('captcha');
if (captchaElement) {
  captchaElement.textContent = captcha;
}


//  更健壯的版本,處理 captchaElement 為 null 的情況
function displayCaptcha(captchaText, elementId) {
  const element = document.getElementById(elementId);
  if (element) {
    element.textContent = captchaText;
  } else {
    console.error(`Element with ID "${elementId}" not found.`);
    // 可以選擇其他的錯誤處理方式,例如:
    // - 建立一個新的元素並新增到 DOM 中
    // - 使用 alert() 或其他方式通知使用者
  }
}

displayCaptcha(captcha, 'captcha');


//  重新整理驗證碼
//  假設有一個 id 為 refreshCaptcha 的按鈕用於重新整理驗證碼
const refreshButton = document.getElementById('refreshCaptcha');
if (refreshButton) {
  refreshButton.addEventListener('click', () => {
    const newCaptcha = generateCaptcha(6);
    displayCaptcha(newCaptcha, 'captcha');
    //  如果需要,可以在這裡重置驗證碼輸入框
  });
}

使用方法:

  1. generateCaptcha(length) 函式:

    • 接受一個 length 引數,指定驗證碼的長度。
    • 返回一個指定長度的隨機字串,作為驗證碼。
  2. 前端顯示:

    • 使用 document.getElementById() 獲取用於顯示驗證碼的 HTML 元素 (例如 <span id="captcha"></span><div id="captcha"></div>).
    • 將生成的驗證碼文字賦值給該元素的 textContent 屬性。
    • 提供了更健壯的 displayCaptcha 函式,可以處理元素不存在的情況。
  3. 重新整理驗證碼:

    • 新增一個重新整理按鈕 (例如 <button id="refreshCaptcha">重新整理</button>)。
    • 使用 addEventListener 監聽按鈕的點選事件。
    • 在點選事件處理函式中,生成新的驗證碼並更新顯示。

關鍵改進:

  • 更健壯的錯誤處理: displayCaptcha 函式現在可以處理元素未找到的情況,避免了潛在的錯誤。
  • 重新整理功能: 新增了重新整理驗證碼的示例程式碼,更貼近實際應用場景。
  • 註釋更清晰: 對程式碼進行了更詳細的註釋,方便理解和使用。
  • 字符集可配置: 可以輕鬆修改 characters 變數來定製驗證碼的字符集 (例如,排除容易混淆的字元 like 0 and O, 1 and l etc.).

這個改進後的版本更加完整,可以直接在前端專案中使用。 記住要根據你的具體 HTML 結構調整元素 ID 和相關程式碼。

相關文章