JavaScript驗證碼生成和驗證效果

螞蟻小編發表於2018-05-21

本章節分享一段程式碼例項,它實現了動態生成驗證碼,並且能夠實現驗證碼輸入的驗證。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
.v_code {
  width: 600px;
  margin: 0 auto;
}
.v_code > input {
  width: 60px;
  height: 36px;
  margin-top: 10px;
}
.code_show {
  overflow: hidden;
}
.code_show span {
  display: block;
  float: left;
  margin-bottom: 10px;
}
.code_show a {
  display: block;
  float: left;
  margin-top: 10px;
  margin-left: 10px;
}
.code {
  font-style: italic;
  background-color: #f5f5f5;
  color: blue;
  font-size: 30px;
  letter-spacing: 3px;
  font-weight: bolder;
  float: left;
  cursor: pointer;
  padding: 0 5px;
  text-align: center;
}
#inputCode {
  width: 100px;
  height: 30px;
}
a {
  text-decoration: none;
  font-size: 12px;
  color: #288bc4;
  cursor: pointer;
}
a:hover {
  text-decoration: underline;
}
</style>
<script>
var code;
function createCode() {
  code = "";
  var codeLength = 6; //驗證碼的長度
  var checkCode = document.getElementById("checkCode");
  var codeChars = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
       'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
       'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  for (var index = 0; index < codeLength; index++) {
    var charNum = Math.floor(Math.random() * 52);
    code += codeChars[charNum];
  }
  if (checkCode) {
    checkCode.className = "code";
    checkCode.innerHTML = code;
  }
}
function validateCode() {
  var inputCode = document.getElementById("inputCode").value;
  var textShow = document.getElementById("text_show")
  if (inputCode.length <= 0) {
    textShow.innerHTML = "請輸入驗證碼";
    textShow.style.color = "red";
  } else if (inputCode.toUpperCase() != code.toUpperCase()) {
    textShow.innerHTML = "您輸入的驗證碼有誤";
    textShow.style.color = "red";
    createCode();
  } else {
    textShow.innerHTML = "驗證碼正確";
    textShow.style.color = "green";
  }
}
function checkCode(){
  var btn = document.getElementById("Button1");
  btn.onclick=function(){
    validateCode();
  }
}
window.onload = function () {
  checkCode();
  createCode();
  document.getElementById("checkCode").onclick = function () { createCode() }
  linkbt.onclick = function () { createCode() }
  inputCode.onclick = function () { validateCode(); }
}
</script>
</head>
<body>
  <div class="v_code">
    <div class="code_show">
      <span class="code" id="checkCode"></span>
      <a id="linkbt">看不清換一張</a>
    </div>
    <div class="input_code">
      <label for="inputCode">驗證碼:</label>
      <input type="text" id="inputCode"/>
      <span id="text_show"></span>
    </div>
    <input id="Button1" type="button" value="確定" />
  </div>
</body>
</html>

上面的程式碼實現了我們的妖氣,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).var code,宣告一個變數,用來儲存驗證碼。

(2).function createCode() {},此函式可以建立一個驗證碼。

(3).code = "",先將驗證碼設定為空。

(4).var codeLength = 6,驗證碼的長度為6。

(5).var checkCode = document.getElementById("checkCode"),獲取id屬性值為checkCode的元素物件。

(6). var codeChars = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9),此陣列用來儲存驗證碼所使用的字元。

(7).for (var index = 0; index < codeLength; index++) {

  var charNum = Math.floor(Math.random() * 52);

  code += codeChars[charNum];

},通過for迴圈犯事建立一個長度為6的驗證碼字串。

(8).if (checkCode) {

  checkCode.className = "code";

  checkCode.innerHTML = code;

}如果存在checkCode元素物件。

那麼就設定它的class屬性值和html字串內容。

(9).function validateCode() {},此函式實現了驗證功能。

(10).var inputCode = document.getElementById("inputCode").value,獲取輸入驗證碼的值。

(11).var textShow = document.getElementById("text_show"),獲取要顯示警告與的元素物件。

(12).if (inputCode.length <= 0) {

  textShow.innerHTML = "請輸入驗證碼";

  textShow.style.color = "red";

} else if (inputCode.toUpperCase() != code.toUpperCase()) {

  textShow.innerHTML = "您輸入的驗證碼有誤";

  textShow.style.color = "red";

  createCode();

} else {

  textShow.innerHTML = "驗證碼正確";

  textShow.style.color = "green";

}上面是對驗證碼驗證的簡單邏輯。

(13).function checkCode(){

  var btn = document.getElementById("Button1");

  btn.onclick=function(){

    validateCode();

  }

},此函式可以實現事件處理函式的註冊功能。

二.相關閱讀:

(1).Math.floor()參閱javascript Math.floor()一章節。

(2).Math.random() 參閱js Math.random()一章節。

(3).className參閱js className一章節。

(4).innerHTML參閱innerHTML一章節。

(5).toUpperCase()參閱javascript toUpperCase()一章節。

相關文章