jQuery密码生成器

时间:2010-03-19 14:04:55

标签: javascript jquery passwords

我有以下JS代码来检查密码强度,同时也创建一个随机密码。我想要做的是编辑代码,这样它就不会将生成的密码放在密码字段中,而是将其放在一个带有randompassword id的span标签内。此外,我希望它默认情况下,span标签内会有一个随机密码,然后当用户点击按钮时,它会产生另一个密码。并且还将链接移动到span标签旁边而不是密码框。

感谢。

以下是代码:

$.fn.passwordStrength = function( options ){
 return this.each(function(){
  var that = this;that.opts = {};
  that.opts = $.extend({}, $.fn.passwordStrength.defaults, options);

  that.div = $(that.opts.targetDiv);
  that.defaultClass = that.div.attr('class');

  that.percents = (that.opts.classes.length) ? 100 / that.opts.classes.length : 100;

   v = $(this)
  .keyup(function(){
   if( typeof el == "undefined" )
    this.el = $(this);
   var s = getPasswordStrength (this.value);
   var p = this.percents;
   var t = Math.floor( s / p );

   if( 100 <= s )
    t = this.opts.classes.length - 1;

   this.div
    .removeAttr('class')
    .addClass( this.defaultClass )
    .addClass( this.opts.classes[ t ] );

  })
  .after('<a href="#">Generate Password</a>')
  .next()
  .click(function(){
   $(this).prev().val( randomPassword() ).trigger('keyup');
   return false;
  });
 });

 function getPasswordStrength(H){
  var D=(H.length);
  if(D>5){
   D=5
  }
  var F=H.replace(/[0-9]/g,"");
  var G=(H.length-F.length);
  if(G>3){G=3}
  var A=H.replace(/\W/g,"");
  var C=(H.length-A.length);
  if(C>3){C=3}
  var B=H.replace(/[A-Z]/g,"");
  var I=(H.length-B.length);
  if(I>3){I=3}
  var E=((D*10)-20)+(G*10)+(C*15)+(I*10);
  if(E<0){E=0}
  if(E>100){E=100}
  return E
 }

 function randomPassword() {
  var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$_+?%^&)";
  var size = 10;
  var i = 1;
  var ret = ""
  while ( i <= size ) {
   $max = chars.length-1;
   $num = Math.floor(Math.random()*$max);
   $temp = chars.substr($num, 1);
   ret += $temp;
   i++;
  }
  return ret;
 }

};

$(document)
.ready(function(){
 $('#password1').passwordStrength({targetDiv: '#iSM',classes : Array('weak','medium','strong')});

});

3 个答案:

答案 0 :(得分:2)

// you can use another improved version to generate password as follows

//Define
function wpiGenerateRandomNumber(length) {

    var i = 0;
    var numkey = "";
    var randomNumber;

    while( i < length) {

        randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;

        if ((randomNumber >=33) && (randomNumber <=47)) { continue; }
        if ((randomNumber >=58) && (randomNumber <=90)) { continue; }
        if ((randomNumber >=91) && (randomNumber <=122)) { continue; }
        if ((randomNumber >=123) && (randomNumber <=126)) { continue; }

        i++;
        numkey += String.fromCharCode(randomNumber);

    }

    return numkey;

}

// Call

var myKey=wpiGenerateRandomNumber(10); // 10=length

alert(myKey);



// Output

2606923083

答案 1 :(得分:1)

这一行:

$(this).prev().val( randomPassword() ).trigger('keyup');

单击后插入值。因此,您可以更改该值以将密码粘贴到您想要的任何位置。例如,您可以将其更改为:

$('span#randompassword').html(randomPassword());

当页面加载时,你也可以运行它来立即粘贴那个范围内的东西:

$(document).ready(function(){
     $('span#randompassword').html(randomPassword());
});

答案 2 :(得分:0)

//Very simple method to generate random number; can be use to generate random password key as well


jq(document).ready( function() {

jq("#genCodeLnk").click( function() {

d = new Date();

t = d.getTime();

jq("#cstm_invitecode").val(t);

});

});