32進数チェックデジット生成サンプル

<input id="t" type="text" placeholder="生成するシリアルコードを32進数で入力">
<button id="b" type="button">ランダム生成</button>
<div id="r"></div>
const t = document.getElementById('t')
const b = document.getElementById('b')
const r = document.getElementById('r')
function checkDigit() {
  const s = t.value.trim()
  if (s.length > 7) {
    r.textContent = '入力は7桁以下でお願いします。'
    return
  }
  const n = parseInt(s, 36)
  const x = String(n).split('').reduce((a, b) => {
    return parseInt(a, 10) + parseInt(b, 10)
  })
  r.textContent = n.toString(36) + x.toString(36).slice(-1)
}

t.addEventListener('input', () => {
  checkDigit()
})

b.addEventListener('click', () => {
  t.value = Math.floor(Math.random() * 32**7).toString(32)
  checkDigit()
})