2015-12-30 111 views
0

我的密碼強度檢查器出現問題。 結果的顏色不會根據密碼的強度而改變。 我想我在JavaScript中有「addClass」的問題。 這裏是代碼...密碼強度檢查器

HTML:

<!DOCTYPE HTML> 
    <html> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <script src="jquery.min.js"></script> 
    <link rel="stylesheet" type="text/css" href="style.css" />  
    <script src="script.js"></script>  
    </head> 

    <body> 
    <div id="container"> 
     <div id="content"> 
      <form name="pass_strength"> 
      <p><label for="username">Username : </label> 
       <input type="text" name="username" class="input"/> 
      </p> 
      <p><label for="password">Password : </label> 
       <input type="password" name="password" id="password" class="input" /> 
       <span id="result"></span> 
      </p> 
      </form>  
     </div> 

     </div> 
    </body> 
</html> 

CSS:

 body 
     { background-color:#CCC;} 

    #container 
    { 
    width:20%; 
    background-color:#000; 
    margin:0 auto; 
    border:5px solid #FFF; 
    margin-top:150px; 
    } 
    #content 
    { 
    padding:10px; 
    border: 2px solid rgb(105, 91, 91); 
    box-shadow: 2px 2px 10px #FFF; 
    background: #CCC; 
    } 
.input 
{ 
    margin:10px; 
} 


#result 
{ 
    color:#F00; 
    text-shadow:#666; 
} 

a 
{ 
    color:#000; 
} 

.red{color:red;} 
.orange{color:orange;} 
.green{color:green;} 

JS:

$(document).ready(function() { 

    $('#password').keyup(function(){ 
    $('#result').html(checkStrength($('#password').val())) 
    })  

    function checkStrength(password){ 

    var strength = 0 

    if (password.length < 6) { 
    $('#result').removeClass() 
    $('#result').addClass('short green') 
    return 'Too short' 
    } 

    if (password.length > 7) strength += 1 

    if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) strength += 1 

    if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) strength += 1 

    if (password.match(/([!,%,&,@,#,$,^,*,?,_,~])/)) strength += 1 

    if (password.match(/(.*[!,%,&,@,#,$,^,*,?,_,~].*[!,%,&,@,#,$,^,*,?,_,~])/)) strength += 1 


if (strength < 2) { 
    $('#result').removeClass() 
    $('#result').addClass('weak') 
    $('#result').addClass('green') 
    return 'Weak'   
} else if (strength == 2) { 
    $('#result').removeClass('green') 
    $('#result').addClass('orange') 
    return 'Good'  
} else { 
    $('#result').removeClass('red') 
    $('#result').removeClass('orange') 
    $('#result').addClass('strong','green') 
    return 'Strong' 
} 
} 
}); 
+0

實行「有一個問題,我的密碼強度檢查。」 - 這不是你的CSS的問題,很可能不是你的HTML。 – intboolstring

回答

0

您提供色彩跨度element.Id屬性的ID代碼演示具有比類屬性的優先級最高,因此顏色沒有分配到的結果。

您可以將類添加到<span>元素,併爲該類添加顏色。

你可以看到演示這裏http://jsfiddle.net/tenigada/RH8f6/575/

0

習慣了這種

#result.red{color:red;} 
#result.orange{color:orange;} 
#result.green{color:green;} 

因爲您習慣了ID而不適用於css類,但idclass更具功效,比IDcss這個類更有效。

$(document).ready(function() { 
 

 
    $('#password').keyup(function(){ 
 
    $('#result').html(checkStrength($('#password').val())) 
 
    })  
 

 
    function checkStrength(password){ 
 

 
    var strength = 0 
 

 
    if (password.length < 6) { 
 
    $('#result').removeClass() 
 
    $('#result').addClass('short green') 
 
    return 'Too short' 
 
    } 
 

 
    if (password.length > 7) strength += 1 
 

 
    if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) strength += 1 
 

 
    if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) strength += 1 
 

 
    if (password.match(/([!,%,&,@,#,$,^,*,?,_,~])/)) strength += 1 
 

 
    if (password.match(/(.*[!,%,&,@,#,$,^,*,?,_,~].*[!,%,&,@,#,$,^,*,?,_,~])/)) strength += 1 
 

 

 
if (strength < 2) { 
 
    $('#result').removeClass() 
 
    $('#result').addClass('weak'); 
 
    $('#result').addClass('green'); 
 
    return 'Weak'   
 
} else if (strength == 2) { 
 
    $('#result').removeClass('green'); 
 
    $('#result').addClass('orange'); 
 
    return 'Good'  
 
} else { 
 
    $('#result').removeClass('red'); 
 
    $('#result').removeClass('orange'); 
 
    $('#result').addClass('strong green'); 
 
    return 'Strong' 
 
} 
 
} 
 
});
body 
 
     { background-color:#CCC;} 
 

 
    #container 
 
    { 
 
    width:20%; 
 
    background-color:#000; 
 
    margin:0 auto; 
 
    border:5px solid #FFF; 
 
    margin-top:150px; 
 
    } 
 
    #content 
 
    { 
 
    padding:10px; 
 
    border: 2px solid rgb(105, 91, 91); 
 
    box-shadow: 2px 2px 10px #FFF; 
 
    background: #CCC; 
 
    } 
 
.input 
 
{ 
 
    margin:10px; 
 
} 
 

 

 
#result 
 
{ 
 
    color:#F00; 
 
    text-shadow:#666; 
 
} 
 

 
a 
 
{ 
 
    color:#000; 
 
} 
 

 
#result.red{color:red;} 
 
#result.orange{color:orange;} 
 
#result.green{color:green;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<!DOCTYPE HTML> 
 
    <html> 
 
    <head> 
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
 
    <script src="jquery.min.js"></script> 
 
    <link rel="stylesheet" type="text/css" href="style.css" />  
 
    <script src="script.js"></script>  
 
    </head> 
 

 
    <body> 
 
    <div id="container"> 
 
     <div id="content"> 
 
      <form name="pass_strength"> 
 
      <p><label for="username">Username : </label> 
 
       <input type="text" name="username" class="input"/> 
 
      </p> 
 
      <p><label for="password">Password : </label> 
 
       <input type="password" name="password" id="password" class="input" /> 
 
       <span id="result"></span> 
 
      </p> 
 
      </form>  
 
     </div> 
 

 
     </div> 
 
    </body> 
 
</html>

0

我發現this它可以幫助你,我已經使用JavaScript

function password_validate(txt) { 
 
    var val1 = 0; 
 
    var val2 = 0; 
 
    var val3 = 0; 
 
    var val4 = 0; 
 
    var val5 = 0; 
 
    var counter, color, result; 
 
    var flag = false; 
 
    if (txt.value.length <= 0) { 
 
    counter = 0; 
 
    color = "transparent"; 
 
    result = ""; 
 
    } 
 
    if (txt.value.length < 8 & txt.value.length > 0) { 
 
    counter = 20; 
 
    color = "red"; 
 
    result = "Short"; 
 
    } else { 
 
    document.getElementById(txt.id + "error").innerHTML = " "; 
 
    txt.style.borderColor = "grey"; 
 
    var regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,15}$/; 
 
    // document.getElementById("pass_veri").style.display="block"; 
 
    var fletter = /[a-z]/; 
 
    if (fletter.test(txt.value)) { 
 
     val1 = 20; 
 

 
    } else { 
 
     val1 = 0; 
 
    } 
 
    //macth special character 
 
    var special_char = /[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/; 
 
    if (special_char.test(txt.value)) { 
 
     val2 = 30; 
 
    } else { 
 
     val = 0; 
 
    } 
 
    /*capital_letter*/ 
 
    var cap_lett = /[A-Z]/; 
 
    if (cap_lett.test(txt.value)) { 
 
     val3 = 20; 
 
    } else { 
 
     val = 0; 
 
    } 
 
    /*one numeric*/ 
 
    var num = /[0-9]/; 
 
    if (num.test(txt.value)) { 
 
     val4 = 20; 
 
    } else { 
 
     val4 = 0; 
 
    } 
 
    /* 8-15 character*/ 
 
    var range = /^.{8,50}$/; 
 
    if (range.test(txt.value)) { 
 
     val5 = 10; 
 
    } else { 
 
     val5 = 0; 
 
    } 
 
    counter = val1 + val2 + val3 + val4 + val5; 
 

 
    if (counter >= 30) { 
 
     color = "skyblue"; 
 
     result = "Fair"; 
 
    } 
 
    if (counter >= 50) { 
 
     color = "gold"; 
 
     result = "Good"; 
 
    } 
 
    if (counter >= 80) { 
 
     color = "green"; 
 
     result = "Strong"; 
 
    } 
 
    if (counter >= 90) { 
 
     color = "green"; 
 
     result = "Very Strong"; 
 
    } 
 
    } 
 
    document.getElementById("prog").style.width = counter + "%"; 
 
    document.getElementById("prog").style.backgroundColor = color; 
 
    document.getElementById("result").innerHTML = result; 
 
    document.getElementById("result").style.color = color; 
 
}
\t \t body { 
 
\t \t font-family: 'Rajdhani', sans-serif; 
 
\t \t background-color: #E4E4E4; 
 
\t \t } 
 
\t \t /* tooltip*/ 
 
\t \t 
 
\t \t .hint { 
 
\t \t width: 258px; 
 
\t \t background: red; 
 
\t \t position: relative; 
 
\t \t -moz-border-radius: 10px; 
 
\t \t -webkit-border-radius: 10px; 
 
\t \t border-radius: 10px; 
 
\t \t position: absolute; 
 
\t \t left: 0px; 
 
\t \t border: 1px solid #CC9933; 
 
\t \t background-color: #FFFFCC; 
 
\t \t display: none; 
 
\t \t padding: 20px; 
 
\t \t font-size: 11px; 
 
\t \t } 
 
\t \t 
 
\t \t .hint:before { 
 
\t \t content: ""; 
 
\t \t position: absolute; 
 
\t \t left: 100%; 
 
\t \t top: 24px; 
 
\t \t width: 0; 
 
\t \t height: 0; 
 
\t \t border-top: 17px solid transparent; 
 
\t \t border-bottom: 1px solid transparent; 
 
\t \t border-left: 22px solid #CC9933; 
 
\t \t } 
 
\t \t 
 
\t \t .hint:after { 
 
\t \t content: ""; 
 
\t \t position: absolute; 
 
\t \t left: 100%; 
 
\t \t top: 26px; 
 
\t \t width: 0; 
 
\t \t height: 0; 
 
\t \t border-top: 14px solid transparent; 
 
\t \t border-bottom: 1px solid transparent; 
 
\t \t border-left: 20px solid #FFFFCC; 
 
\t \t } 
 
\t \t 
 
\t \t .parent { 
 
\t \t position: relative; 
 
\t \t } 
 
\t \t 
 
\t \t .progress { 
 
\t \t height: 7px; 
 
\t \t } 
 
\t \t 
 
\t \t #progres { 
 
\t \t display: block; 
 
\t \t } 
 
\t \t 
 
\t \t p { 
 
\t \t margin: 0px; 
 
\t \t font-weight: normal; 
 
\t \t } 
 
\t \t 
 
\t \t .form-control { 
 
\t \t width: none; 
 
\t \t margin-left: 260px; 
 
\t \t margin-top: 25px; 
 
\t \t width: 200px; 
 
\t \t }
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div class="form-group col-lg-12 parent "> 
 
    <label class="hint" id="pass-hint"> 
 
    Password Strength:<span id="result"></span> 
 
    <br> 
 
    <div class="progress" id="progres"> 
 
     <div class="progress-bar progress-bar-danger" role="progressbar" id="prog"> 
 
     </div> 
 
    </div> 
 
    <p> passowrd must have atleast 8 charatcer</p> 
 
    </label> 
 
    <input type="password" class="form-control" data-toggle="tooltip" data-placement="left" id="pass" onfocus="document.getElementById('pass-hint').style.display='block'" onblur="document.getElementById('pass-hint').style.display='none'" placeholder="**********" 
 
    oninput="password_validate(this);document.getElementById('progres').style.display='block';"> 
 
    <i class=" form-control-feedback" id="passsuccess" aria-hidden="true"></i> 
 
    <span id="passerror" class="help-block error"></span> 
 
</div>