JavaScript密碼強度提醒
人性化密碼設定,通常會根據設定的密碼內容,提示密碼的強度,在一定程度上能夠提醒使用者將密碼設定的更為安全。
下面通過程式碼例項介紹一下如何實現此效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #passStrength{ height:6px; width:120px; border:1px solid #ccc; padding:2px; } .strengthLv1{ background:red; height:6px; width:40px; } .strengthLv2{ background:orange; height:6px; width:80px; } .strengthLv3{ background:green; height:6px; width:120px; } </style> <script type="text/javascript"> function PasswordStrength(passwordID, strengthID) { this.init(strengthID); var _this = this; document.getElementById(passwordID).onkeyup = function() { _this.checkStrength(this.value); } }; PasswordStrength.prototype.init=function(strengthID){ var id = document.getElementById(strengthID); var div = document.createElement('div'); var strong = document.createElement('strong'); this.oStrength = id.appendChild(div); this.oStrengthTxt = id.parentNode.appendChild(strong); }; PasswordStrength.prototype.checkStrength=function(val){ var aLvTxt = ['', '低', '中', '高']; var lv = 0; if(val.match(/[a-z]/g)){lv++;} if(val.match(/[0-9]/g)){lv++;} if(val.match(/(.[^a-z0-9])/g)){lv++;} if(val.length < 6){lv=0;} if(lv > 3){lv=3;} this.oStrength.className = 'strengthLv' + lv; this.oStrengthTxt.innerHTML = aLvTxt[lv]; }; window.onload=function(){ new PasswordStrength('pass','passStrength'); } </script> </head> <body> <input type="password" name="pass" id="pass" maxlength="16"/> <div class="pass-wrap"> 密碼強度:<div id="passStrength"></div> </div> </body> </html>
上面的程式碼實現了簡單的密碼強度提示效果,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).function PasswordStrength(passwordID, strengthID) {},宣告一個函式,這裡是用作建構函式,第一個引數是密碼框的id屬性值,第二個引數是要顯示密碼強度的元素的id屬性值。
(2).this.init(strengthID),init()函式是PasswordStrength()是在建構函式原型原型物件上的一個函式,用來建立和追加相應的元素,this是指向PasswordStrength()建構函式的物件例項。
(3).var _this = this,將PasswordStrength()建構函式例項物件this引用賦值給變數_this。
(4).document.getElementById(passwordID).onkeyup=function() {_this.checkStrength(this.value);},為文字框註冊onkeyup事件處理函式。
(5).PasswordStrength.prototype.init=function(strengthID){},為建構函式的原型物件新增init函式。
(6).var id = document.getElementById(strengthID),獲取具有指定id的元素物件。
(7).var div = document.createElement('div'),建立一個div元素。
(8).var strong = document.createElement('strong'),建立一個strong元素。
(9).this.oStrength = id.appendChild(div),將建立的div元素附加到獲取元素物件中去,在本程式碼中就是新增到passStrength元素中去,新新增的這個div用來顯示密碼強度紅黃藍圖示。
(10).this.oStrengthTxt = id.parentNode.appendChild(strong),給獲取到元素的父節點新增一個strong子節點,在本程式碼中就是將strong元素新增到pass-wrap元素中去,用來顯示低、中和高。
(11).PasswordStrength.prototype.checkStrength=function(val){},為建構函式的原型物件新增checkStrength函式,引數是文字框值。
(12).var aLvTxt = ['', '低', '中', '高'],建立一個陣列,儲存的是表示密碼強度的文字。
(13).var lv = 0,宣告一個變數,初始值為0,用來標識密碼的強度。
(14).if(val.match(/[a-z]/g)){lv++;},如果密碼中包含a-z的字母,那麼lv加1。
(15).if(val.match(/[0-9]/g)){lv++;},如果密碼中包含0-9的數字,那麼lv加1。
(16).if(val.match(/(.[^a-z0-9])/g)){lv++;},如果密碼中包含的字元並非字母或者數字,而是其他比較偏僻的符號,那麼lv加1.
(17).if(val.length < 6){lv=0;},如果密碼的長度小於6,那麼僵lv的值重置為0。
(18).if(lv > 3){lv=3;},如果lv大於3,那麼就將其設定為3.
(19).this.oStrength.className = 'strengthLv' + lv,設定第7步建立的div的class樣式值。
(20).this.oStrengthTxt.innerHTML = aLvTxt[lv],在第8步建立的strong元素中顯示密碼強度文字。
(21).new PasswordStrength('pass','passStrength'),以構造方式的形式執行函式。
二.相關閱讀:
(1).onkeyup事件參閱javascript keyup 事件一章節。
(2).prototype參閱javascript prototype 原型一章節。
(3).appendChild()參閱js appendChild()一章節。
(4).parentNode參閱js parentNode一章節。
(5).match()參閱正規表示式match()函式一章節。
(6).className參閱js className屬性詳解一章節。
相關文章
- JavaScript 密碼強度提示效果JavaScript密碼
- JavaScript密碼強度等級詳解JavaScript密碼
- 密碼強度的正規表示式(JavaScript)總結密碼JavaScript
- 直播平臺原始碼,JavaScript表單驗證密碼強度原始碼JavaScript密碼
- 20190110-生成密碼以及簡易密碼強度檢查密碼
- Linux 生成複雜密碼並且檢查密碼強度Linux密碼
- 3種生成高強度密碼的方法密碼
- 如何在 Linux 生成複雜密碼並且檢查密碼強度Linux密碼
- 基於規則評分的密碼強度檢測演算法分析及實現(JavaScript)密碼演算法JavaScript
- Javascript校驗密碼複雜度的正規表示式JavaScript密碼複雜度
- JavaScript實現線上生成高強度隨機密碼工具-toolfk程式設計師線上工具網JavaScript隨機密碼程式設計師
- linux下生成高強度密碼的四大神器Linux密碼
- 寫一個密碼生成器,並同時寫一個密碼強度校驗的方法密碼
- win10系統怎麼設定電腦定期強制提醒使用者更改登入密碼Win10密碼
- 用Abp實現找回密碼和密碼強制過期策略密碼
- 強密碼驗證正規表示式密碼
- Linux 如何設定密碼複雜度?Linux密碼複雜度
- javascript表單賬戶密碼校驗提交JavaScript密碼
- win10怎麼強制解除電腦開機密碼 強制解除win10開機密碼Win10密碼
- 密碼提示強弱的正規表示式密碼
- win10平板忘記密碼如何解碼_平板win10忘記密碼強制重置Win10密碼
- Model 編寫程式碼智慧提醒
- WWDC 2018:自動強密碼與驗證碼自動輸入密碼
- 密碼安全:密碼設定要求,密碼爆破辦法,密碼歸類使用,密碼處置方案密碼
- Oracle EBS 資料庫密碼複雜度設定Oracle資料庫密碼複雜度
- 【PROFILE】Oracle11g密碼複雜度說明Oracle密碼複雜度
- 希爾密碼(hill密碼)密碼
- 超強python黑客技術,aircrack-ng突破 wifi 密碼!Python黑客AIWiFi密碼
- DolphinScheduler&Linkis 強強聯合,探索計算治理難題的終極密碼!密碼
- Profile設定高標準密碼複雜度的方法密碼複雜度
- 應用密碼學——古典密碼密碼學
- 序列密碼與分組密碼密碼
- 後臺提醒與代理提醒:HarmonyOS Next 的智慧提醒管理
- 密碼密碼
- 助理君 — 隨時得到程式碼更新提醒
- Win10電腦開機提示提醒使用者名稱或密碼不正確的解決方法Win10密碼
- Mac強大的密碼管理工具1Password 7Mac密碼
- 應用密碼學 - 公鑰密碼密碼學