如何动态生成固定长度的验证码

时间:2015-04-03 09:24:38

标签: jquery

我正在动态生成capthca代码,如下所示

$(document).ready(function() {

DrawCaptcha();

});


   function DrawCaptcha() {
     var a = Math.ceil(Math.random() * 10) + '';
     var b = Math.ceil(Math.random() * 10) + '';
     var c = Math.ceil(Math.random() * 10) + '';
     var d = Math.ceil(Math.random() * 10) + '';
     var e = Math.ceil(Math.random() * 10) + '';
     var f = Math.ceil(Math.random() * 10) + '';
     var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' ' + f;
     $(".captha-img")[0].innerHTML = code;
   }

这一切都很好。

但是现在,我面临的问题是,

我需要一个恰好6位数的Capthcha代码,但有时正在生成的capthacha超过6位数。

你能告诉我如何解决这个问题吗?

http://jsfiddle.net/2yXsL/383/

2 个答案:

答案 0 :(得分:2)

Math.ceil更改为Math.floor,它将始终返回6位数字:

   function DrawCaptcha() {
     var a = Math.floor(Math.random() * 10) + '';
     var b = Math.floor(Math.random() * 10) + '';
     var c = Math.floor(Math.random() * 10) + '';
     var d = Math.floor(Math.random() * 10) + '';
     var e = Math.floor(Math.random() * 10) + '';
     var f = Math.floor(Math.random() * 10) + '';
     var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' ' + f;
     $(".captha-img")[0].innerHTML = code;
   }

您的代码存在的问题是,每当Math.random()向您返回9.0以上的任何内容时,它就会将其四舍五入为10.这就是为什么您有时会看到超过6位的原因。

答案 1 :(得分:1)

您可以使用.substring()方法,如下所示: -

  function DrawCaptcha() {
     var a = Math.ceil(Math.random() * 10) + '';
     var b = Math.ceil(Math.random() * 10) + '';
     var c = Math.ceil(Math.random() * 10) + '';
     var d = Math.ceil(Math.random() * 10) + '';
     var e = Math.ceil(Math.random() * 10) + '';
     var f = Math.ceil(Math.random() * 10) + '';
     var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' ' + f;
     $(".captha-img")[0].innerHTML = code.substring(0,12);
   }

上面的代码将提供一个固定的6位数作为capthcha代码。

DEMO