当前位置: 首页 > news >正文

Javascript 验证码

需要用到验证码,突然想能否用js做验证码呢?
当然js不能作图,但是可以用js模拟做验证码的
于是花了20分钟按照我的想法尝试做,最后做出来比我想象中的效果还要好,呵呵
先贴个图看看

代码:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head >
    
< title > 无标题页 </ title >
    
< style  type ="text/css" >
        .code
        
{
            background-image
: url(code.jpg) ;
            font-family
: Arial ;
            font-style
: italic ;
            color
: Red ;
            border
: 0 ;
            padding
: 2px 3px ;
            letter-spacing
: 3px ;
            font-weight
: bolder ;
        
}
        .unchanged
        
{
            border
: 0 ;
        
}
    
</ style >
    
< script  language ="javascript"  type ="text/javascript" >
    
     
var  code ;  // 在全局 定义验证码
      function  createCode()
     { 
       code 
=   "" ;
       
var  codeLength  =   6 ; // 验证码的长度
        var  checkCode  =  document.getElementById( " checkCode " );
       
var  selectChar  =   new  Array( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); // 所有候选组成验证码的字符,当然也可以用中文的
        
       
for ( var  i = 0 ;i < codeLength;i ++ )
       {
      
        
       
var  charIndex  =  Math.floor(Math.random() * 36 );
       code 
+= selectChar[charIndex];
       
       
       }
//        alert(code);
        if (checkCode)
       {
         checkCode.className
= " code " ;
         checkCode.value 
=  code;
       }
       
     }
     
      
function  validate ()
     {
       
var  inputCode  =  document.getElementById( " input1 " ).value;
       
if (inputCode.length  <= 0 )
       {
           alert(
" 请输入验证码! " );
       }
       
else   if (inputCode  !=  code )
       {
          alert(
" 验证码输入错误! " );
          createCode();
// 刷新验证码
       }
       
else
       {
         alert(
" ^-^ OK " );
       }
       
       }
       
    
</ script >
</ head >
< body >
< form   action ="#" >
    
&nbsp; < input   type ="text"   onclick ="createCode()"  id ="input1"   />
    
    
< input  type ="text"   id ="checkCode"  class ="unchanged"  style ="width: 80px"    />< br  />
    
< input  id ="Button1"   onclick ="validate();"  type ="button"  value ="确定"   /> &nbsp;
</ form >
</ body >
</ html >

 

呵呵,高手看了还望别笑话,仅仅是为了练习而做着玩的 (:
解释就不用说了,大家看注释应该就很清楚了
其实那个用来混淆文字的背景图只是在文字下方加了个背景图,验证码还是不能防止Copy的,所以基本是不能当真正的验证码用的。
这里设计到我最近学习js&css中的一些东西,呵呵,练习,学习,进步~

相关文章:

  • ERP会计科目 疱丁解
  • 七月,又逢雷雨夜
  • c#中值类型和引用类型
  • 9.4.1 使用参数来防止SQL注入
  • ASP.NET 框架 之HttpHandler
  • 判断“textbox为空”写法
  • Using System.Threading
  • Windows Server 2008 参考价格
  • 我是一个*** (九)
  • SET NOCOUNT 使用说明
  • JSP学习笔记(二十一):struts2中访问request,application对象
  • vb.net中的键盘事件处理
  • 开源与云计算
  • 我的博客也是男的(还好)
  • 转自Microsoft-DDOS处理参考-如何:强化 TCP/IP 堆栈安全
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • If…else
  • iOS | NSProxy
  • JavaScript设计模式系列一:工厂模式
  • Mybatis初体验
  • Theano - 导数
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 基于游标的分页接口实现
  • 深度学习入门:10门免费线上课程推荐
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 积累各种好的链接
  • ​ArcGIS Pro 如何批量删除字段
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Linux整合apache和tomcat构建Web服务器
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core中Emit的使用
  • .NET NPOI导出Excel详解
  • .NET/C# 的字符串暂存池
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NetCore部署微服务(二)
  • .net下简单快捷的数值高低位切换
  • .NET中GET与SET的用法
  • @ModelAttribute使用详解
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [22]. 括号生成
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C/C++] -- 二叉树
  • [CentOs7]搭建ftp服务器(2)——添加用户
  • [codeforces]Levko and Permutation
  • [FT]chatglm2微调
  • [hive]中的字段的数据类型有哪些
  • [JS]变量
  • [poj 3461]Oulipo[kmp]