2016-10-24 6 views
-2

私はパスワード強度にZXCVBN.jsを使用しています。期待どおりに動作しています。しかし、私はパスワードの強さが良いまたは強い表示されている場合にのみ登録ボタンを有効にしたい。パスワード強度が良好または強ければ、どのようにレジスタボタンを有効にしますか?

ここには作業codepenがあります。

var strength = { 
0: "Worst", 
1: "Bad", 
2: "Weak", 
3: "Good", 
4: "Strong" 
} 

var password = document.getElementById('password'); 
var meter = document.getElementById('password-strength-meter'); 
var text = document.getElementById('password-strength-text'); 

password.addEventListener('input', function() { 
var val = password.value; 
var result = zxcvbn(val); 

meter.value = result.score; 

    if (val !== "") { 
text.innerHTML = "Strength: " + strength[result.score]; 
} else { 
text.innerHTML = ""; 
} 
}); 
+0

あなたはAngularJSを使用していないと、なぜあなたはmeter.value'は '> ='よりも3である 'かどうかを確認いけないと、あなた何をしていますneed – Weedoze

+0

こんにちは私はcodepenで与えられるAngular JSを使用しています。それはあなたがそれを見るならば、全体のコードを持っています。しかし、私はあなたがそれが仕事をしなかったと言ったことを試しました - 私は次のコードを追加しました - if(meter.value> = 3){ $( "#reg")prop( 'disabled'、true); – HebleV

+0

あなたはAngularJSについて読むべきです...あなたはコードコードの中でJavaScriptを使用しています – Weedoze

答えて

1
  1. あなたはAngularJSを使用していません。 Angularの唯一のものはng-clickng-modelですが、あなたはそれらを使用していません。あなたにはコントローラがありません。

  2. EventListenerの外側の強度をチェックしていたので、チェックはonloadでした。

  3. あなたは$('red')を使用していましたが、あなたのコードペンにJqueryがなく、id : redの要素がありません。ボタンのidreg

var strength = { 
 
    0: "Worst", 
 
    1: "Bad", 
 
    2: "Weak", 
 
    3: "Good", 
 
    4: "Strong" 
 
} 
 

 
var password = document.getElementById('password'); 
 
var meter = document.getElementById('password-strength-meter'); 
 
var text = document.getElementById('password-strength-text'); 
 
var register = document.getElementById('register'); 
 

 
password.addEventListener('input', function() { 
 
    var val = password.value; 
 
    var result = zxcvbn(val); 
 

 
    // Update the password strength meter 
 
    meter.value = result.score; 
 

 
    // Update the text indicator 
 
    if (val !== "") { 
 
    text.innerHTML = "Strength: " + strength[result.score]; 
 
    } else { 
 
    text.innerHTML = ""; 
 
    } 
 
    if (meter.value >= 3) { 
 
    register.disabled = false; 
 
    } else { 
 
    register.disabled = true; 
 
    } 
 
});
button[disabled] { 
 
    color: white; 
 
    background-color: red; 
 
} 
 
button { 
 
    color: white; 
 
    background-color: green; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.0/zxcvbn.js"></script> 
 
<div class="col-md-6 col-md-offset-3"> 
 
    <label for="password">Password</label> 
 
    <input type="password" name="password" id="password" class="form-control" ng-model="password" required /> 
 
    <meter max="4" id="password-strength-meter"></meter> 
 
    <p id="password-strength-text"></p> 
 

 
    <button type="submit" ng-click="register()" id="register" disabled>Register</button> 
 
</div>

+0

こんにちは@weedoze時間を割いてコメントしてお答えいただき、ありがとうございます。私はコントローラを持っていますが、htmlパーツだけが必要なときに投稿する理由を考えました。私はあなたの答えを使用しましたが、それは期待どおりに仕事をしませんでした。私はそれのための角度jsを使用する必要がありますね? – HebleV

+0

@HebleV AngularJSを使用している場合は、ここで純粋なJSをなぜ使用していますか?提供されたコードスニペットが機能しています。明らかにあなたのコードの他のいくつかの点のために働いていません。何が効いていないのですか? – Weedoze

+0

はい、あなたは正しいです。コードスニペットが機能しています。いくつかの他の部分のために、それは働いていません。だから私がコードを使用すると、たとえパスワードフィールドに1つのチャプターを入力しても、ボタンは有効になっています。 – HebleV

0

実際に、あなたは、単に**。JavaScriptを介して、または**無効または有効にjqueryのを使用して、ボタン要素の属性値を変更したり、使用して、ボタン要素にいくつかのクラスを追加することができます.addClass(クラス名) jqueryのプロパティ。例えば、 。

.classname{ 
disabled:true; 
} 
+0

あなたは私の要件を読んでください。 – HebleV

関連する問題