2017-01-11 7 views
1

パスワードジェネレータを改善したい。私は、ユーザーがパスワードに含めるべきものを選択できるようにしたい。たとえば、パスワードには文字は含まれていますが、数字や文字は使用できません。誰かが私が何をしなければならないと言うことができますか?ここパスワードジェネレータパスワードを含めるものを選択

は私のJavaScriptとHTMLです: - まず

function randomPassword(length) { 
 
    var chars = "[email protected]#$%^&*()-+<>ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
 
    var pass = " "; 
 
    for (var x = 0; x < length; x++) { 
 
     var i = Math.floor(Math.random() * chars.length); 
 
     pass += chars.charAt(i); 
 
    } 
 
    return pass; 
 
} 
 
function generate() { 
 
    myform.row_password.value = randomPassword(myform.length.value); 
 
}
<form name="myform" method="post" class="form-horizontal"> 
 
      <div class="form-group " > 
 
       <div class="col-sm-10"> 
 
    <br> 
 
        <input class="rowpassword" type="text" name="row_password" size="45s"> 
 
        <br> 
 
        <input class="form-control passwordlength" type="text" name="length" value="8" > password length 
 
        <br> 
 
        <br> 
 
        <input type="checkbox"> Groß - und Kleinbuchstaben 
 
        <br> 
 
        <input type="checkbox"> numbers 
 
        <br> 
 
        <input type="checkbox"> specialcharacters 
 
        <br> 
 
        <br> 
 
        <input type="button" class="form-control button" value="Passwort generieren" onClick="generate();" tabindex="2"> 
 
       </div> 
 
      </div> 
 
     </form> 
 

 

 

答えて

3

、checkboxsためcheckedプロパティを確認してください。 次に、複数の文字列を持つかどうかを判断したり、チェックされているものに依存するフィルタを適用することができます。 元について、あなたは一緒に適切なプールを追加することができますので、あなたがこれを行う場合は、忘れてはいけません

var chars =""; 
var letterPool= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
var specialPool="[email protected]#$%^&*()-+<>" 
var numberPool="1234567890" 

if(characterType.checked) 
{ 
    chars+=characterTypePool; 
} 

など の線に沿って何かが何も選択されていない場合のエラー処理を持っています。

UPDATE:(!ボックスをチェックすることを忘れないでください) 私が実証するスニペット(マイナスエラー処理)を追加しました


 
function randomPassword(length) { 
 
    var chars =""; 
 
var letterPool= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
 
var specialPool="[email protected]#$%^&*()-+<>"; 
 
var numberPool="1234567890"; 
 

 
if(document.getElementById('letters').checked) 
 
{ 
 
    chars+=letterPool; 
 
} 
 

 
if(document.getElementById('numbers').checked) 
 
{ 
 
    chars+=numberPool; 
 
} 
 
    
 
if(document.getElementById('speChars').checked) 
 
{ 
 
    chars+=specialPool; 
 
} 
 

 
    var pass = " "; 
 
    for (var x = 0; x < length; x++) { 
 
     var i = Math.floor(Math.random() * chars.length); 
 
     pass += chars.charAt(i); 
 
    } 
 
    return pass; 
 
} 
 
function generate() { 
 
    myform.row_password.value = randomPassword(myform.length.value); 
 
}
<form name="myform" method="post" class="form-horizontal"> 
 
      <div class="form-group " > 
 
       <div class="col-sm-10"> 
 
    <br> 
 
        <input class="rowpassword" type="text" name="row_password" size="45s"> 
 
        <br> 
 
        <input class="form-control passwordlength" type="text" name="length" value="8" > password length 
 
        <br> 
 
        <br> 
 
        <input type="checkbox" id='letters'> Groß - und Kleinbuchstaben 
 
        <br> 
 
        <input type="checkbox" id='numbers'> numbers 
 
        <br> 
 
        <input type="checkbox" id='speChars'> specialcharacters 
 
        <br> 
 
        <br> 
 
        <input type="button" class="form-control button" value="Passwort generieren" onClick="generate();" tabindex="2"> 
 
       </div> 
 
      </div> 
 
     </form>

UPDATE TWO:

保証するために、選択された文字タイプの少なくとも1つが存在することを確認するには、コードを追加する必要があります。 1つの方法は、最初に1つを選択し、それを最終パスワードのランダムな位置に追加することです。コードの次のような変更は、配列とスプライスを使用して行われます。

function randomPassword(length) { 
    var chars =""; 
var letterPool= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
var specialPool="[email protected]#$%^&*()-+<>"; 
var numberPool="1234567890"; 
var guaranteed=""; 

if(document.getElementById('letters').checked) 
{ 
    chars+=letterPool; 
    guaranteed+=letterPool.charAt(Math.floor(Math.random() * letterPool.length)); 
} 

if(document.getElementById('numbers').checked) 
{ 
    chars+=numberPool; 
    guaranteed+=numberPool.charAt(Math.floor(Math.random() * numberPool.length)); 
} 

if(document.getElementById('speChars').checked) 
{ 
    chars+=specialPool; 
    guaranteed+=specialPool.charAt(Math.floor(Math.random() * specialPool.length)); 
} 

    var pass =[]; 
    for (var x = 0,len=length-guaranteed.length; x < len; x++) { 
     var i = Math.floor(Math.random() * chars.length); 
     pass.push(chars.charAt(i)); 
    } 
    for(var x = 0,len=guaranteed.length; x < len; x++) 
    pass.splice(Math.floor(Math.random() * pass.length),0,guaranteed.charAt(x)); 
    pass=pass.join(''); 
    return pass; 
} 
function generate() { 
    myform.row_password.value = randomPassword(myform.length.value); 
} 
+0

最初にお返事ありがとうございます。しかし、今では私のコードは動作しません。 – Leon

+0

@Leon私は完全な感謝の気持ちを持って – Orangesandlemons

+0

チェックボックスに入るためにIDを追加した完全なスニペットを追加しました:) – Leon

関連する問題