zoukankan      html  css  js  c++  java
  • 仿建行JS键盘

      一款比较好用的JS密码输入脚本,效果图如下:



    代码如下:

    <html>
    <head>
    <script>
    /*js文件*/
    window.onload=function()
    {
        userpswdvalue=null;  
        initCalc();
    }
    var userpswdvalue;
    var CapsLockValue=0;
    var checkSoftKey;
    var pIsPWD=false;
    var hidekeyboard=true;
    var ps; 
    function setVariables() 
    {
        tablewidth=630;
        tableheight=20;
        if (navigator.appName == "Netscape") 
        {
            horz=".left";
            vert=".top";
            docStyle="document.";
            styleDoc="";
            innerW="window.innerWidth";
            innerH="window.innerHeight";
            offsetX="window.pageXOffset";
            offsetY="window.pageYOffset";
        }
        else
        {
            horz=".pixelLeft";
            vert=".pixelTop";
            docStyle="";
            styleDoc=".style";
            innerW="document.body.clientWidth";
            innerH="document.body.clientHeight";
            offsetX="document.body.scrollLeft";
            offsetY="document.body.scrollTop";
        }
    }
    function checkLocation() 
    {
        if (checkSoftKey) 
        {
            objectXY="softkeyboard";
            var availableX=eval(innerW);
            var availableY=eval(innerH);
            var currentX=eval(offsetX);
            var currentY=eval(offsetY);
            x=availableX-tablewidth+currentX;
            y=currentY;
            evalMove();
        }
        setTimeout("checkLocation()",0);
    }
    function evalMove() 
    {
        eval(docStyle + objectXY + styleDoc + vert + "=" + y);
    }
    self.onError=null;
    currentX = currentY = 0;  
    whichIt = null;           
    lastScrollX = 0; lastScrollY = 0;
    NS = (document.layers) ? 1 : 0;
    IE = (document.all) ? 1: 0;
    function heartBeat() 
    {
        if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }
        if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }
        if(diffY != lastScrollY) 
        {
        percent = .1 * (diffY - lastScrollY);
        if(percent > 0) percent = Math.ceil(percent);
    else percent = Math.floor(percent);
    if(IE) document.all.softkeyboard.style.pixelTop += percent;
    if(NS) document.softkeyboard.top += percent; 
    lastScrollY = lastScrollY + percent;}
    if(diffX != lastScrollX) {
    percent = .1 * (diffX - lastScrollX);
    if(percent > 0) percent = Math.ceil(percent);
    else percent = Math.floor(percent);
    if(IE) document.all.softkeyboard.style.pixelLeft += percent;
    if(NS) document.softkeyboard.left += percent;
    lastScrollX = lastScrollX + percent; }  }
    function checkFocus(x,y) { 
    stalkerx = document.softkeyboard.pageX;
    stalkery = document.softkeyboard.pageY;
    stalkerwidth = document.softkeyboard.clip.width;
    stalkerheight = document.softkeyboard.clip.height;
    if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight))) return true;
    else return false;}
    function grabIt(e) {
    checkSoftKey = false;
    if(IE) {
    whichIt = event.srcElement;
    while (whichIt.id!=null&&whichIt.id.indexOf("softkeyboard") == -1) {
    whichIt = whichIt.parentElement;
    if (whichIt == null) { return true; } }
    if(whichIt.style!=null){
    whichIt.style.pixelLeft = whichIt.offsetLeft;
    whichIt.style.pixelTop = whichIt.offsetTop;
    }
    currentX = (event.clientX + document.body.scrollLeft);
    currentY = (event.clientY + document.body.scrollTop);  
    } else { 
    window.captureEvents(Event.MOUSEMOVE);
    if(checkFocus (e.pageX,e.pageY)) { 
    whichIt = document.softkeyboard;
    StalkerTouchedX = e.pageX-document.softkeyboard.pageX;
    StalkerTouchedY = e.pageY-document.softkeyboard.pageY;} }
    return true; }
    function moveIt(e) {
    if (whichIt == null) { return false; }
    if(IE) {
    if(whichIt.style!=null){
    newX = (event.clientX + document.body.scrollLeft);
    newY = (event.clientY + document.body.scrollTop);
    distanceX = (newX - currentX);    distanceY = (newY - currentY);
    currentX = newX;    currentY = newY;
    whichIt.style.pixelLeft += distanceX;
    whichIt.style.pixelTop += distanceY;
    if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;
    if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;
    if(whichIt.style.pixelLeft > document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;
    if(whichIt.style.pixelTop > document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;
    event.returnValue = false;
    }
    } else { 
    whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);
    if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;
    if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;
    if( (whichIt.left + whichIt.clip.width) >= (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;
    if( (whichIt.top + whichIt.clip.height) >= (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;
    return false;}
    return false; }
    function dropIt() {whichIt = null;
    if(NS) window.releaseEvents (Event.MOUSEMOVE);
    return true; }
    if(NS) {window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);
    window.onmousedown = grabIt;
    window.onmousemove = moveIt;
    window.onmouseup = dropIt; }
    if(IE) {
    document.onmousedown = grabIt;
    document.onmousemove = moveIt;
    document.onmouseup = dropIt; }
    var style1="<style>";
    style1+=".btn_letter {BORDER-RIGHT: 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: 1px solid; PADDING-LEFT: 2px;FONT-SIZE: 14px; BORDER-LEFT: 1px solid; CURSOR: hand;PADDING-TOP: 1px; BORDER-BOTTOM: 1px solid; 25px; height:20px;BORDER-LEFT-COLOR: #7b9ebd; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff, EndColorStr=#DDDCDC); BORDER-BOTTOM-COLOR: #5c08b2; COLOR: #075bc3; BORDER-TOP-COLOR: #7b9ebd; BORDER-RIGHT-COLOR: #5c08b2}";
    style1+=".btn_num {25px;BORDER-RIGHT:1px solid; PADDING-RIGHT: 1px; BORDER-TOP: 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; BORDER-LEFT: 1px solid; CURSOR: hand; PADDING-TOP: 1px; BORDER-BOTTOM: 1px solid;height:20px;BORDER-LEFT-COLOR: #7ebf4f; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#B3D997); BORDER-BOTTOM-COLOR: #7ebf4f; COLOR: black; BORDER-TOP-COLOR: #7ebf4f; BORDER-RIGHT-COLOR: #7ebf4f}";
    style1+=".table_title {FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#B2DEF7, EndColorStr=#7AB7DA); height:26px;padding-top: 3px;}";
    style1+=".btn_input {BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid}";
    style1+="TD {FONT: 12px 宋体,Tahoma; COLOR: #505050}</style>"; 
    document.write(style1);                                                   
    document.write("<DIV align=center id="softkeyboard" name="softkeyboard" style="position:absolute; left:0px; top:0px; 400px; z-index:180;display:none"><table id="CalcTable" width="" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor=""><FORM id=Calc name=Calc action="" method=post autocomplete="off"><tr><td class="table_title" title="尊敬的客户:为了保证网上密码安全,建议使用密码输入器输入密码!" align="right" valign="middle" bgcolor="" style="cursor: default;height:30"><INPUT type=hidden value="" name=password><INPUT type=hidden value=ok name=action2>&nbsp<font style="font-weight:bold; font-size:13px; color:#075BC3">仿建行JS键盘  密码输入器</font>&nbsp&nbsp&nbsp&nbsp  &nbsp  &nbsp  &nbsp  &nbsp  &nbsp &nbsp <INPUT id=useKey class="btn_input" type=button value="使用键盘输入" bgtype="1" onclick="userpswdvalue.readOnly=0;userpswdvalue.focus();closekeyboard();userpswdvalue.value='';"><span style="2px;"></span></td></tr><tr align="center"><td align="center" bgcolor="#FFFFFF"><table align="center" width="%" border="0" cellspacing="1" cellpadding="0">
    <tr align="left" valign="middle"> 
    <td> <input type=button value=" ~ "></td>
    <td> <input type=button value=" ! "></td>
    <td> <input type=button value=" @ "></td>
    <td> <input type=button value=" # "></td>
    <td> <input type=button value=" $ "></td>
    <td><input type=button value=" % "></td>
    <td><input type=button value=" ^ "></td>
    <td> <input type=button value=" & "></td>
    <td><input type=button value=" * "></td>
    <td><input type=button value=" ( "></td>
    <td><input type=button value=" ) "></td>
    <td><input type=button value=" _ "></td>
    <td> <input type=button value=" + "></td>
    <td><input type=button value=" | "></td>
    <td colspan="1" rowspan="2"> <input name="button10" type=button value=" 退格" onclick="setpassvalue();"  onDblClick="setpassvalue();" style="100px;height:40px"> 
    </td>
    </tr>
    <tr align="left" valign="middle"> 
    <td><input type=button value=" ` "></td>
    <td><input type=button bgtype="2" name="button_number1" value=" 1 "></td>
    <td> <input type=button bgtype="2" name="button_number2" value=" 2 "></td>
    <td> <input type=button bgtype="2" name="button_number3" value=" 3 "></td>
    <td> <input type=button bgtype="2" name="button_number4" value=" 4 "></td>
    <td> <input type=button bgtype="2" name="button_number5" value=" 5 "></td>
    <td> <input type=button bgtype="2" name="button_number6" value=" 6 "></td>
    <td> <input type=button bgtype="2" name="button_number7" value=" 7 "></td>
    <td> <input type=button bgtype="2" name="button_number8" value=" 8 "></td>
    <td> <input type=button bgtype="2" name="button_number9" value=" 9 "></td>
    <td> <input bgtype="2"  name="button_number0" type=button value=" 0 "></td>
    <td> <input type=button value=" - "></td>
    <td> <input type=button value=" = "></td>
    <td> <input type=button value=" \ "></td>
    <td> </td>
    </tr>
    <tr align="left" valign="middle"> 
    <td> <input type=button value=" q "></td>
    <td> <input type=button value=" w "></td>
    <td> <input type=button value=" e "></td>
    <td> <input type=button value=" r "></td>
    <td> <input type=button value=" t "></td>
    <td> <input type=button value=" y "></td>
    <td> <input type=button value=" u "></td>
    <td> <input type=button value=" i "></td>
    <td> <input type=button value=" o "></td>
    <td> <input name="button8" type=button value=" p "></td>
    <td> <Input name="button9" type=button value=" { "></td>
    <td> <input type=button value=" } "></td>
    <td> <input type=button value=" [ "></td>
    <td> <input type=button value=" ] "></td>
    <td><input name="button9" type=button onClick="capsLockText();setCapsLock();"  onDblClick="capsLockText();setCapsLock();" value="切换大/小写" style="100px;"></td>
    </tr>
    <tr align="left" valign="middle"> 
    <td> <input type=button value=" a "></td>
    <td> <input type=button value=" s "></td>
    <td> <input type=button value=" d "></td>
    <td> <input type=button value=" f "></td>
    <td> <input type=button value=" g "></td>
    <td> <input type=button value=" h "></td>
    <td> <input type=button value=" j "></td>
    <td> <input name="button3" type=button value=" k "></td>
    <td> <input name="button4" type=button value=" l "></td>
    <td> <input name="button5" type=button value=" : "></td>
    <td> <input name="button7" type=button value=" " "></td>
    <td> <input type=button value=" ; "></td>
    <td> <input type=button value=" ' "></td>
    <td rowspan="2" colspan="2"> <input name="button12" type=button onclick="OverInput();" value="   确定  " style="126px;height:42px;"></td>
    </tr>
    <tr align="left" valign="middle"> 
    <td><input name="button2" type=button value=" z "></td>
    <td> <input type=button value=" x "></td>
    <td> <input type=button value=" c "></td>
    <td> <input type=button value=" v "></td>
    <td> <input type=button value=" b "></td>
    <td> <input type=button value=" n "></td>
    <td> <input type=button value=" m "></td>
    <td> <input type=button value=" < "></td>
    <td> <input type=button value=" > "></td>
    <td> <input type=button value=" ? "></td>
    <td> <input type=button value=" , "></td>
     <td> <input type=button value=" . "></td>
     <td> <input type=button value=" / "></td>
    </tr>
    </table></td></FORM></tr></table></DIV>");
    function addValue(newValue)
    {
    if (CapsLockValue==0)
    {
    var str=Calc.password.value;
    if(str.length<userpswdvalue.maxLength)
    {
    Calc.password.value += newValue;
    }   
    if(str.length<=userpswdvalue.maxLength)
    {
    userpswdvalue.value=Calc.password.value;
    psuserpswdvalue();
    }
    }
    else
    {
    var str=Calc.password.value;
    if(str.length<userpswdvalue.maxLength)
    {
    Calc.password.value += newValue;
    }
    if(str.length<=userpswdvalue.maxLength)
    {
    userpswdvalue.value=Calc.password.value;
    psuserpswdvalue();
    }
    }
    }
    function setpassvalue()
    {
    var longnum=Calc.password.value.length;
    var num
    num=Calc.password.value.substr(0,longnum-1);
    Calc.password.value=num;
    var str=Calc.password.value;
    userpswdvalue.value=Calc.password.value;
    psuserpswdvalue();
    }
    function OverInput()
    {
    var str=Calc.password.value;
    userpswdvalue.value=Calc.password.value;
    removeJiamiName();
    psuserpswdvalue();
    closekeyboard();
    Calc.password.value="";
    userpswdvalue.readOnly=1;
    }
    function closekeyboard(theForm)
    {
    softkeyboard.style.display="none";
    if(null!=unhideSelect){
    unhideSelect();
    }
    }
    function showkeyboard()
    {
    randomNumberButton();
    var th = userpswdvalue;
    var ttop  = th.offsetTop;
    var thei  = th.clientHeight;
    var tleft = th.offsetLeft;
    var ttyp  = th.type;
    while (th = th.offsetParent){ttop+=th.offsetTop; tleft+=th.offsetLeft;}
    softkeyboard.style.top  = ttop+thei+16;
    softkeyboard.style.left = tleft-100;
    softkeyboard.style.display="block";
    userpswdvalue.readOnly=1;
    userpswdvalue.blur();
    document.all.useKey.focus();
    if(null!=hideSelect){
    hideSelect();
    }
    }
    function setCapsLock()
    {
    if (CapsLockValue==0)
    {
    CapsLockValue=1
    }
    else 
    {
    CapsLockValue=0
    }
    }
    function setCalcborder()
    {
    CalcTable.style.border="1px solid #B5ADF1"
    }
    function setHead()
    {
    CalcTable.cells[0].style.backgroundColor="#B5ADF1" 
    }
    function setCalcButtonBg()
    {
    for(var i=0;i<Calc.elements.length;i++)
    {
    if(Calc.elements[i].type=="button"&&Calc.elements[i].bgtype!="1")
    {
    if(Calc.elements[i].bgtype=="2"){
    Calc.elements[i].className="btn_num";
    }else{
    Calc.elements[i].className="btn_letter";
    }
    var str1=Calc.elements[i].value;
    str1=str1.trim();
    if(str1.length==1)
    {
    }
    var thisButtonValue=Calc.elements[i].value;
    thisButtonValue=thisButtonValue.trim();
    if(thisButtonValue.length==1)
    {
    Calc.elements[i].onclick=
    function ()
    {
    var thisButtonValue=this.value;
    thisButtonValue=thisButtonValue.trim();
    thisButtonValue=jiamiMimaKey(thisButtonValue);
    addValue(thisButtonValue);
    }
    Calc.elements[i].ondblclick=
    function ()
    {
    var thisButtonValue=this.value;
    thisButtonValue=thisButtonValue.trim();
    thisButtonValue=jiamiMimaKey(thisButtonValue);
    addValue(thisButtonValue);
    }
    }
    }
    }
    }
    function initCalc()
    {
    setCalcborder();
    setHead();
    setCalcButtonBg();
    }
    String.prototype.trim = function()
    {
    return this.replace(/(^s*)|(s*$)/g, "");
    }
    var capsLockFlag;
    capsLockFlag=true;
    function capsLockText()
    {
    if(capsLockFlag)
    {
    for(var i=0;i<Calc.elements.length;i++)
    {
    var char=Calc.elements[i].value;
    var char=char.trim()
    if(Calc.elements[i].type=="button"&&char>="a"&&char<="z"&&char.length==1)
    {
    Calc.elements[i].value=" "+String.fromCharCode(char.charCodeAt(0)-32)+" "
    }
    }
    }
    else
    {
    for(var i=0;i<Calc.elements.length;i++)
    {
    var char=Calc.elements[i].value;
    var char=char.trim()
    if(Calc.elements[i].type=="button"&&char>="A"&&char<="Z"&&char.length==1)
    {
    Calc.elements[i].value=" "+String.fromCharCode(char.charCodeAt(0)+32)+" "
    }
    }
    }
    capsLockFlag=!capsLockFlag;
    }
    function randomNumberButton(){
    var a = new Array(10);  
    a[0]=0;a[1]=1;a[2]=2;a[3]=3;a[4]=4;a[5]=5;a[6]=6;a[7]=7;a[8]=8;a[9]=9;
    var randomNum;
    var times=10;
    for(var i=0;i<10;i++){
    randomNum = parseInt(Math.random()*10);
    var tmp=a[0];
    a[0]=a[randomNum];
    a[randomNum]=tmp;
    }
    Calc.button_number0.value=" "+a[0]+" ";
    Calc.button_number1.value=" "+a[1]+" ";
    Calc.button_number2.value=" "+a[2]+" ";
    Calc.button_number3.value=" "+a[3]+" ";
    Calc.button_number4.value=" "+a[4]+" ";
    Calc.button_number5.value=" "+a[5]+" ";
    Calc.button_number6.value=" "+a[6]+" ";
    Calc.button_number7.value=" "+a[7]+" ";
    Calc.button_number8.value=" "+a[8]+" ";
    Calc.button_number9.value=" "+a[9]+" ";
    }
    function hideSelect(){
    var i=0;
    while(i<document.getElementsByTagName("select").length){
    document.getElementsByTagName("select")[i].style.visibility = "hidden";
    i=i+1;
    }
    }
    function unhideSelect(){
    var i=0;
    while(i<document.getElementsByTagName("select").length){
    document.getElementsByTagName("select")[i].style.visibility = "visible";
    i=i+1;
    }
    }
    function  jiamiMimaKey(newValue) {
    if (typeof(b) == "undefined" || typeof(ifUseYinshe) == "undefined" || ifUseYinshe == 0) {return newValue;}
    var everyone = '';
    var afterPass = '';
    for (var i=0;i<newValue.length;i++ ) {
       everyone = newValue.charAt(i);
       for (var j =0;j<((b.length)/2);j++) {
         if (everyone == b[2*j]) {
           afterPass = afterPass + b[2*j+1];
           break;
         }
       }
      }
      newValue= afterPass;
      if (typeof(jiami) != "undefined"){
        jiami = 1;
      }  
      return afterPass;
    }
    function removeJiamiName() {
      var jiamiObjectname = userpswdvalue.name; 
      var jiamiObjectnameBefore = jiamiObjectname + ',';
      var jiamiObjectnameAll = ','+jiamiObjectname + ',';
      if (typeof(keyjiamiName) != "undefined") {
        if (keyjiamiName.indexOf(jiamiObjectnameBefore) == 0) {
          keyjiamiName = keyjiamiName.substring(jiamiObjectnameBefore.length);
        } else if (keyjiamiName.indexOf(jiamiObjectnameAll) != -1) {
          keyjiamiName.replace(jiamiObjectnameBefore,',');
        }
       }
    } 
    function psuserpswdvalue(){
    var passwd=userpswdvalue.value;
    var PWD=document.getElementsByName("PWD");
    if(PWD!=null && ps!=null && pIsPWD) {
         ps.update(getStartPassword(passwd));
    }
    }
    
    </script>
    </head>
    <body>
    <input type="password" ID="txtPassword_I" Width="161px" BorderColor="#7F9DB9" BorderStyle="Solid" 
       onfocus="if (hidekeyboard) { 
    hidekeyboard=false;userpswdvalue=this;showkeyboard();this.readOnly=1;document.getElementById
    ('Calc').password.value='';};" 
       onchange="Calc.password.value=this.value;keyjiami=0;jiami = 0"
       onclick="userpswdvalue=this;showkeyboard();this.readOnly=1;Calc.password.value=''"
       onkeyup="if(event.keyCode==9){userpswdvalue=this;showkeyboard();this.readOnly=1;Calc.password.value=''}"
       onKeyDown="Calc.password.value=this.value;"
       BorderWidth="1pt" Height="20px"></asp:TextBox>
      </body>
     </html>
    

      

  • 相关阅读:
    关于flask-sesson
    自己动手写出静态网站与动态网站
    支付宝支付
    Scanner
    JAVA编程
    《剑指offer》经典面试50题
    java程序员常见面试题
    Java面试题(一) String相关
    Java集合总览
    写好Java代码的30条经验总结
  • 原文地址:https://www.cnblogs.com/lyuec/p/3592608.html
Copyright © 2011-2022 走看看