Js之软键盘实现(源码)

本文分享了如何在网页中实现软键盘以提高安全性,包括大键盘和小键盘两种效果,适用于登录输入密码等场景。提供了完整的CSS、JS和HTML代码示例,已在IE浏览器上测试通过。

鉴于安全性的考虑,不少网站在登录输入密码时都采用了软键盘,避免一些键盘记录工具和木马对击键的捕捉。项目中也有这个需求,就分享给大家了。有大键盘,和小键盘两个效果的,整理于网上资源,纠正了错误,均已在IE测试通过,有完整例子(css,js,html)。

 大键盘:

softkey.css

#Page_content {
 PADDING-RIGHT: 20px; PADDING-LEFT: 20px; BACKGROUND: #fff; PADDING-BOTTOM: 0px; MARGIN: 0px auto; WIDTH: 860px; PADDING-TOP: 0px
}
#Header {
 BACKGROUND: url(../images5/blue/header_bg.gif) repeat-x left top
}
#Page_left {
 FLOAT: left; MARGIN: 12px 0px 15px; WIDTH: 660px
}
#Page_right {
 FLOAT: right; MARGIN: 15px 0px; WIDTH: 180px
}
#Footer {
 PADDING-RIGHT: 2px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 20px; COLOR: #aaa; PADDING-TOP: 5px; TEXT-ALIGN: left
}
.Area_title {
 PADDING-RIGHT: 2px; BORDER-TOP: #69c 2px solid; MARGIN-TOP: 10px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: 13px; PADDING-BOTTOM: 7px; COLOR: #004d99; PADDING-TOP: 7px
}
.Area_content {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; PADDING-TOP: 3px
}
.Area_button {
 MARGIN-TOP: 7px; PADDING-LEFT: 90px
}
.Area_button IMG {
 VERTICAL-ALIGN: 5px
}
.float_left {
 FLOAT: left
}
.float_right {
 FLOAT: right
}
.content_title {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; PADDING-BOTTOM: 8px; COLOR: #999; PADDING-TOP: 16px
}
.relative {
 PADDING-RIGHT: 0px; BORDER-TOP: #69c 2px solid; PADDING-LEFT: 0px; LIST-STYLE-POSITION: inside; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: url(../images5/blue/icon_list.gif); PADDING-BOTTOM: 0px; MARGIN: 7px 0px 0px; PADDING-TOP: 3px
}
.relative LI {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; PADDING-BOTTOM: 1px; MARGIN: 3px 0px 0px; COLOR: #777; PADDING-TOP: 1px; BORDER-BOTTOM: #ddd 1px solid
}
 {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
BODY {
 BACKGROUND: #eee
}
BODY {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
DIV {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
TD {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
SPAN {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
SELECT {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
P {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
IMG {
 BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px
}
A {
 COLOR: #039; TEXT-DECORATION: none
}
A:hover {
 COLOR: #b20; TEXT-DECORATION: none
}
INPUT {
 FONT: 12px "宋体",Tahoma
}
INPUT.button {
 BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: url(../images5/blue/button_bg.gif) #a74d4a repeat-x left top; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 1px; CURSOR: hand; COLOR: #fff; MARGIN-RIGHT: 10px; PADDING-TOP: 4px; BORDER-RIGHT-WIDTH: 0px
}
INPUT.button_dis {
 BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 1px; CURSOR: hand; COLOR: #fff; MARGIN-RIGHT: 10px; PADDING-TOP: 4px; BORDER-RIGHT-WIDTH: 0px
}
UL {
 PADDING-LEFT: 17px; FONT-WEIGHT: bold; LIST-STYLE-POSITION: outside; BACKGROUND: url(../images5/icon_ul.gif) no-repeat left top; LIST-STYLE-IMAGE: url(../images5/blue/icon_list.gif); MARGIN: 0px; COLOR: #999
}
LI {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; PADDING-BOTTOM: 1px; MARGIN: 3px 0px 0px; COLOR: #505050; PADDING-TOP: 1px
}
.clear {
 CLEAR: both
}
.top_margin {
 MARGIN: 46px 8px 0px 0px
}
.text_bold {
 FONT-WEIGHT: bold
}
.step_on .text_content {
 COLOR: #555
}
.text_content {
 PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; BORDER-BOTTOM: #eee 1px solid
}
.text_red {
 COLOR: #b20
}
A.text_red:hover {
 COLOR: #777
}
.req {
 FONT-WEIGHT: bold; COLOR: #b20
}
.info {
 COLOR: #777
}
.dark {
 COLOR: #555
}
.text_big {
 FONT-SIZE: 14px; COLOR: #444; LINE-HEIGHT: 20px
}
.big {
 FONT-SIZE: 14px
}
.reg_flow {
 PADDING-RIGHT: 0px; PADDING-LEFT: 20px; FONT-WEIGHT: normal; FONT-SIZE: 12px; BACKGROUND: #f0f0f0; PADDING-BOTTOM: 3px; MARGIN: 16px 8px 12px; COLOR: #777; PADDING-TOP: 5px
}
.reg_title {
 PADDING-RIGHT: 0px; PADDING-LEFT: 26px; FONT-WEIGHT: bold; FONT-SIZE: 13px; BACKGROUND: url(../images5/icon_reg.gif) no-repeat left top; PADDING-BOTTOM: 4px; COLOR: #004d99; PADDING-TOP: 4px
}
.flow_focus {
 FONT-WEIGHT: bold; COLOR: #b20
}
.flow_undo {
 COLOR: #777
}
.flow_done {
 COLOR: #777
}
.image_safe {
 PADDING-LEFT: 78px; BACKGROUND: url(../images5/icon_safe_big.gif) no-repeat left top
}
.text_success {
 BORDER-RIGHT: #69c 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #69c 1px solid; PADDING-LEFT: 134px; BACKGROUND: url(../images5/blue/icon_success.gif) #f0f7ff no-repeat 5px 50%; PADDING-BOTTOM: 35px; BORDER-LEFT: #69c 1px solid; PADDING-TOP: 35px; BORDER-BOTTOM: #69c 1px solid
}
.text_notice {
 BORDER-RIGHT: #69c 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #69c 1px solid; PADDING-LEFT: 134px; BACKGROUND: url(../images5/blue/icon_gantan.gif) #f0f7ff no-repeat 5px 50%; PADDING-BOTTOM: 35px; BORDER-LEFT: #69c 1px solid; PADDING-TOP: 35px; BORDER-BOTTOM: #69c 1px solid
}
.reg_info {
 BORDER-RIGHT: #69c 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #69c 1px solid; PADDING-LEFT: 45px; BACKGROUND: url(../images5/blue/icon_info.gif) #f0f7ff no-repeat 7px 50%; PADDING-BOTTOM: 5px; BORDER-LEFT: #69c 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #69c 1px solid
}
.step_on .tip_off {
 BORDER-RIGHT: #d0e0ef 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #d0e0ef 1px solid; PADDING-LEFT: 14px; BACKGROUND: url(../images5/blue/arr_tip_off.gif) #fff no-repeat 4px 6px; PADDING-BOTTOM: 1px; BORDER-LEFT: #d0e0ef 1px solid; COLOR: #555; PADDING-TOP: 4px; BORDER-BOTTOM: #d0e0ef 1px solid
}
.tip_off {
 PADDING-RIGHT: 3px; PADDING-LEFT: 15px; BACKGROUND: url(../images5/blue/arr_tip_off.gif) #fff no-repeat 4px 6px; PADDING-BOTTOM: 2px; COLOR: #777; PADDING-TOP: 5px
}
.tip_on {
 BORDER-RIGHT: #090 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: #090 1px solid; PADDING-LEFT: 14px; BACKGROUND: url(../images5/blue/arr_tip_on.gif) #e9fde9 no-repeat 4px 6px; PADDING-BOTTOM: 1px; BORDER-LEFT: #090 1px solid; COLOR: #444; PADDING-TOP: 4px; BORDER-BOTTOM: #090 1px solid
}
.tip_on IMG {
 VERTICAL-ALIGN: top
}
.tip_off IMG {
 VERTICAL-ALIGN: top
}
.step_on {
 PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BACKGROUND: #f4f4f4; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.step_off {
 PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BACKGROUND: #fff; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.step_on .content_title {
 COLOR: #444
}
P {
 MARGIN: 6px 0px; TEXT-INDENT: 2em
}
.btn_letter {
 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
}
.btn_num {
 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
}

softkey.js

window.onload=
function()
{
password1=null;  
initCalc();
}
var password1;
var CapsLockValue=0;
var checkSoftKey;
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; width:25px; height:20px;}";
style1+=".btn_num {width: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;}";
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+="</style>"; 
document.write(style1);                                                   
document.write("<DIV align=center id=/"softkeyboard/" name=/"softkeyboard/" style=/"position:absolute; left:0px; top:0px; width: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/"  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/">密码输入器</font>&nbsp&nbsp&nbsp&nbsp&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp&nbsp;&nbsp&nbsp;<INPUT id=useKey class=/"btn_input/" type=button value=/"使用键盘输入/" bgtype=/"1/" onclick=/"password1.readOnly=0;password1.focus();closekeyboard();password1.value='';/"><span style=/"width:2px;/"></span></td></tr><tr align=/"center/"><td align=/"center/" bgcolor=/"#FFFFFF/"><table align=/"center/" width=/"%/" border=/"0/" cellspacing=/"1/" cellpadding=/"0/">/n<tr align=/"left/" valign=/"middle/"> /n<td> <input type=button value=/" ~ /"></td>/n<td> <input type=button value=/" ! /"></td>/n<td> <input type=button value=/" @ /"></td>/n<td> <input type=button value=/" # /"></td>/n<td> <input type=button value=/" $ /"></td>/n<td><input type=button value=/" % /"></td>/n<td><input type=button value=/" ^ /"></td>/n<td> <input type=button value=/" & /"></td>/n<td><input type=button value=/" * /"></td>/n<td><input type=button value=/" ( /"></td>/n<td><input type=button value=/" ) /"></td>/n<td><input type=button value=/" _ /"></td>/n<td> <input type=button value=/" + /"></td>/n<td><input type=button value=/" | /"></td>/n<td colspan=/"1/" rowspan=/"2/"> <input name=/"button10/" type=button value=/" 退格/" onclick=/"setpassvalue();/"  onDblClick=/"setpassvalue();/" style=/"width:100px;height:40px/"> /n</td>/n</tr>/n<tr align=/"left/" valign=/"middle/"> /n<td><input type=button value=/" ` /"></td>/n<td><input type=button bgtype=/"2/" name=/"button_number1/" value=/" 1 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number2/" value=/" 2 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number3/" value=/" 3 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number4/" value=/" 4 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number5/" value=/" 5 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number6/" value=/" 6 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number7/" value=/" 7 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number8/" value=/" 8 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number9/" value=/" 9 /"></td>/n<td> <input bgtype=/"2/"  name=/"button_number0/" type=button value=/" 0 /"></td>/n<td> <input type=button value=/" - /"></td>/n<td> <input type=button value=/" = /"></td>/n<td> <input type=button value=/" // /"></td>/n<td> </td>/n</tr>/n<tr align=/"left/" valign=/"middle/"> /n<td> <input type=button value=/" q /"></td>/n<td> <input type=button value=/" w /"></td>/n<td> <input type=button value=/" e /"></td>/n<td> <input type=button value=/" r /"></td>/n<td> <input type=button value=/" t /"></td>/n<td> <input type=button value=/" y /"></td>/n<td> <input type=button value=/" u /"></td>/n<td> <input type=button value=/" i /"></td>/n<td> <input type=button value=/" o /"></td>/n<td> <input name=/"button8/" type=button value=/" p /"></td>/n<td> <Input name=/"button9/" type=button value=/" { /"></td>/n<td> <input type=button value=/" } /"></td>/n<td> <input type=button value=/" [ /"></td>/n<td> <input type=button value=/" ] /"></td>/n<td><input name=/"button9/" type=button onClick=/"capsLockText();setCapsLock();/"  onDblClick=/"capsLockText();setCapsLock();/" value=/"切换大/小写/" style=/"width:100px;/"></td>/n</tr>/n<tr align=/"left/" valign=/"middle/"> /n<td> <input type=button value=/" a /"></td>/n<td> <input type=button value=/" s /"></td>/n<td> <input type=button value=/" d /"></td>/n<td> <input type=button value=/" f /"></td>/n<td> <input type=button value=/" g /"></td>/n<td> <input type=button value=/" h /"></td>/n<td> <input type=button value=/" j /"></td>/n<td> <input name=/"button3/" type=button value=/" k /"></td>/n<td> <input name=/"button4/" type=button value=/" l /"></td>/n<td> <input name=/"button5/" type=button value=/" : /"></td>/n<td> <input name=/"button7/" type=button value=/" &quot; /"></td>/n<td> <input type=button value=/" ; /"></td>/n<td> <input type=button value=/" ' /"></td>/n<td rowspan=/"2/" colspan=/"2/"> <input name=/"button12/" type=button onclick=/"OverInput();/" value=/"   确定  /" style=/"width:126px;height:42px;/"></td>/n</tr>/n<tr align=/"left/" valign=/"middle/"> /n<td><input name=/"button2/" type=button value=/" z /"></td>/n<td> <input type=button value=/" x /"></td>/n<td> <input type=button value=/" c /"></td>/n<td> <input type=button value=/" v /"></td>/n<td> <input type=button value=/" b /"></td>/n<td> <input type=button value=/" n /"></td>/n<td> <input type=button value=/" m /"></td>/n<td> <input type=button value=/" &lt; /"></td>/n<td> <input type=button value=/" &gt; /"></td>/n<td> <input type=button value=/" ? /"></td>/n<td> <input type=button value=/" , /"></td>/n <td> <input type=button value=/" . /"></td>/n <td> <input type=button value=/" / /"></td>/n</tr>/n</table></td></FORM></tr></table></DIV>");
function addValue(newValue)
{
if (CapsLockValue==0)
{
var str=Calc.password.value;
if(str.length<password1.maxLength)
{
Calc.password.value += newValue;
}   
if(str.length<=password1.maxLength)
{
password1.value=Calc.password.value;
}
}
else
{
var str=Calc.password.value;
if(str.length<password1.maxLength)
{
//Calc.password.value += newValue.toUpperCase();
Calc.password.value += newValue;
}
if(str.length<=password1.maxLength)
{
password1.value=Calc.password.value;
}
}
}

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;
password1.value=Calc.password.value;
}

function OverInput()
{
var str=Calc.password.value;
password1.value=Calc.password.value;
closekeyboard();
Calc.password.value="";
password1.readOnly=1;
}

function closekeyboard(theForm)
{
softkeyboard.style.display="none";
if(null!=unhideSelect){
unhideSelect();
}
}

function showkeyboard()
{
randomNumberButton();
var th = password1;
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";
password1.readOnly=1;
password1.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;
  jiami = 1;
  return afterPass;

}

Softkey.html

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<META http-equiv="Content-Language" content="UTF-8">
<title>软键盘</title>
<link href="softkey.css" type="text/css" rel="stylesheet">
<script src="softkey.js" type="text/javascript"></script>
</head>
<body>
    <form>
        <div align="center">
          <input id="softkey"  type="password" onkeydown="Calc.password.value=this.value"
           onblur="this.className='tip_off'"
           onclick="password1=this;showkeyboard();this.readOnly=1;Calc.password.value=''"
           style="width: 278px;Height: 20px" />
    <input type="button" onclick="alert(document.getElementById('softkey').value);" value="获取密码">
        </div>
    </form>
</body>
</html>

 

小键盘:

smallSoftkey.css

#Page_content {
 PADDING-RIGHT: 20px; PADDING-LEFT: 20px; BACKGROUND: #fff; PADDING-BOTTOM: 0px; MARGIN: 0px auto; WIDTH: 860px; PADDING-TOP: 0px
}
#Header {
 BACKGROUND: url(../images5/blue/header_bg.gif) repeat-x left top
}
#Page_left {
 FLOAT: left; MARGIN: 12px 0px 15px; WIDTH: 660px
}
#Page_right {
 FLOAT: right; MARGIN: 15px 0px; WIDTH: 180px
}
#Footer {
 PADDING-RIGHT: 2px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 20px; COLOR: #aaa; PADDING-TOP: 5px; TEXT-ALIGN: left
}
.Area_title {
 PADDING-RIGHT: 2px; BORDER-TOP: #69c 2px solid; MARGIN-TOP: 10px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: 13px; PADDING-BOTTOM: 7px; COLOR: #004d99; PADDING-TOP: 7px
}
.Area_content {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; PADDING-TOP: 3px
}
.Area_button {
 MARGIN-TOP: 7px; PADDING-LEFT: 90px
}
.Area_button IMG {
 VERTICAL-ALIGN: 5px
}
.float_left {
 FLOAT: left
}
.float_right {
 FLOAT: right
}
.content_title {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; PADDING-BOTTOM: 8px; COLOR: #999; PADDING-TOP: 16px
}
.relative {
 PADDING-RIGHT: 0px; BORDER-TOP: #69c 2px solid; PADDING-LEFT: 0px; LIST-STYLE-POSITION: inside; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: url(../images5/blue/icon_list.gif); PADDING-BOTTOM: 0px; MARGIN: 7px 0px 0px; PADDING-TOP: 3px
}
.relative LI {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; PADDING-BOTTOM: 1px; MARGIN: 3px 0px 0px; COLOR: #777; PADDING-TOP: 1px; BORDER-BOTTOM: #ddd 1px solid
}
 {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
BODY {
 BACKGROUND: #eee
}
BODY {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
DIV {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
TD {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
SPAN {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
SELECT {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
P {
 FONT: 12px "宋体",Tahoma; COLOR: #505050
}
IMG {
 BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px
}
A {
 COLOR: #039; TEXT-DECORATION: none
}
A:hover {
 COLOR: #b20; TEXT-DECORATION: none
}
INPUT {
 FONT: 12px "宋体",Tahoma
}
#CalcTable INPUT.button {
 BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: url(../images5/blue/button_bg.gif) #a74d4a repeat-x left top; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 1px; CURSOR: hand; COLOR: #fff; MARGIN-RIGHT: 10px; PADDING-TOP: 4px; BORDER-RIGHT-WIDTH: 0px
}
INPUT.button_dis {
 BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 1px; CURSOR: hand; COLOR: #fff; MARGIN-RIGHT: 10px; PADDING-TOP: 4px; BORDER-RIGHT-WIDTH: 0px
}
UL {
 PADDING-LEFT: 17px; FONT-WEIGHT: bold; LIST-STYLE-POSITION: outside; BACKGROUND: url(../images5/icon_ul.gif) no-repeat left top; LIST-STYLE-IMAGE: url(../images5/blue/icon_list.gif); MARGIN: 0px; COLOR: #999
}
LI {
 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; PADDING-BOTTOM: 1px; MARGIN: 3px 0px 0px; COLOR: #505050; PADDING-TOP: 1px
}
.clear {
 CLEAR: both
}
.top_margin {
 MARGIN: 46px 8px 0px 0px
}
.text_bold {
 FONT-WEIGHT: bold
}
.step_on .text_content {
 COLOR: #555
}
.text_content {
 PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; BORDER-BOTTOM: #eee 1px solid
}
.text_red {
 COLOR: #b20
}
A.text_red:hover {
 COLOR: #777
}
.req {
 FONT-WEIGHT: bold; COLOR: #b20
}
.info {
 COLOR: #777
}
.dark {
 COLOR: #555
}
.text_big {
 FONT-SIZE: 14px; COLOR: #444; LINE-HEIGHT: 20px
}
.big {
 FONT-SIZE: 14px
}
.reg_flow {
 PADDING-RIGHT: 0px; PADDING-LEFT: 20px; FONT-WEIGHT: normal; FONT-SIZE: 12px; BACKGROUND: #f0f0f0; PADDING-BOTTOM: 3px; MARGIN: 16px 8px 12px; COLOR: #777; PADDING-TOP: 5px
}
.reg_title {
 PADDING-RIGHT: 0px; PADDING-LEFT: 26px; FONT-WEIGHT: bold; FONT-SIZE: 13px; BACKGROUND: url(../images5/icon_reg.gif) no-repeat left top; PADDING-BOTTOM: 4px; COLOR: #004d99; PADDING-TOP: 4px
}
.flow_focus {
 FONT-WEIGHT: bold; COLOR: #b20
}
.flow_undo {
 COLOR: #777
}
.flow_done {
 COLOR: #777
}
.image_safe {
 PADDING-LEFT: 78px; BACKGROUND: url(../images5/icon_safe_big.gif) no-repeat left top
}
.text_success {
 BORDER-RIGHT: #69c 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #69c 1px solid; PADDING-LEFT: 134px; BACKGROUND: url(../images5/blue/icon_success.gif) #f0f7ff no-repeat 5px 50%; PADDING-BOTTOM: 35px; BORDER-LEFT: #69c 1px solid; PADDING-TOP: 35px; BORDER-BOTTOM: #69c 1px solid
}
.text_notice {
 BORDER-RIGHT: #69c 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #69c 1px solid; PADDING-LEFT: 134px; BACKGROUND: url(../images5/blue/icon_gantan.gif) #f0f7ff no-repeat 5px 50%; PADDING-BOTTOM: 35px; BORDER-LEFT: #69c 1px solid; PADDING-TOP: 35px; BORDER-BOTTOM: #69c 1px solid
}
.reg_info {
 BORDER-RIGHT: #69c 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #69c 1px solid; PADDING-LEFT: 45px; BACKGROUND: url(../images5/blue/icon_info.gif) #f0f7ff no-repeat 7px 50%; PADDING-BOTTOM: 5px; BORDER-LEFT: #69c 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #69c 1px solid
}
.step_on .tip_off {
 BORDER-RIGHT: #d0e0ef 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #d0e0ef 1px solid; PADDING-LEFT: 14px; BACKGROUND: url(../images5/blue/arr_tip_off.gif) #fff no-repeat 4px 6px; PADDING-BOTTOM: 1px; BORDER-LEFT: #d0e0ef 1px solid; COLOR: #555; PADDING-TOP: 4px; BORDER-BOTTOM: #d0e0ef 1px solid
}
.tip_off {
 PADDING-RIGHT: 3px; PADDING-LEFT: 15px; BACKGROUND: url(../images5/blue/arr_tip_off.gif) #fff no-repeat 4px 6px; PADDING-BOTTOM: 2px; COLOR: #777; PADDING-TOP: 5px
}
.tip_on {
 BORDER-RIGHT: #090 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: #090 1px solid; PADDING-LEFT: 14px; BACKGROUND: url(../images5/blue/arr_tip_on.gif) #e9fde9 no-repeat 4px 6px; PADDING-BOTTOM: 1px; BORDER-LEFT: #090 1px solid; COLOR: #444; PADDING-TOP: 4px; BORDER-BOTTOM: #090 1px solid
}
.tip_on IMG {
 VERTICAL-ALIGN: top
}
.tip_off IMG {
 VERTICAL-ALIGN: top
}
.step_on {
 PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BACKGROUND: #f4f4f4; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.step_off {
 PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BACKGROUND: #fff; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.step_on .content_title {
 COLOR: #444
}
P {
 MARGIN: 6px 0px; TEXT-INDENT: 2em
}
.btn_letter {
 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
}
.btn_num {
 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
}

smallSoftkey.js

window.onload=
function()
{
password1=null;  
initCalc();
}
var password1;
var CapsLockValue=0;
var checkSoftKey;
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+="#softkeyboard td {padding:0; margin:0;}";
style1+="#softkeyboard input.button {BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: url(../images5/blue/button_bg.gif) #a74d4a repeat-x left top; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 1px; CURSOR: hand; COLOR: #fff; MARGIN-RIGHT: 10px; PADDING-TOP: 4px; BORDER-RIGHT-WIDTH: 0px;}";
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; width:25px; height:20px;}";
style1+=".btn_num {width: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;}";
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+="</style>"; 
document.write(style1);                                                   
document.write("<DIV align=center id=/"softkeyboard/" name=/"softkeyboard/" style=/"position:absolute; left:0px; top:0px; width: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/"  align=/"right/" valign=/"middle/" bgcolor=/"/" style=/"cursor: default;height:30/"><INPUT type=hidden value=/"/" name=password><INPUT type=hidden value=ok name=action2><font style=/"font-weight:bold; font-size:13px; color:#075BC3/">软键盘</font>&nbsp;<INPUT id=useKey class=/"btn_input/" type=button value=/"使用键盘输入/" bgtype=/"1/" onclick=/"password1.readOnly=0;password1.focus();closekeyboard();password1.value='';/" style=/"width:86px;/"><span style=/"width:2px;/"></span></td></tr><tr align=/"center/"><td align=/"center/" bgcolor=/"#FFFFFF/"><table align=/"center/" width=/"%/" border=/"0/" cellspacing=/"1/" cellpadding=/"0/">/n<tr align=/"left/" valign=/"middle/"> /n<td><input type=button bgtype=/"2/" name=/"button_number1/" value=/" 1 /"></td>/n<td><input type=button bgtype=/"2/" name=/"button_number2/" value=/" 2 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number3/" value=/" 3 /"></td>/n<td> <input bgtype=/"2/"  name=/"button_number0/" type=button value=/" 0 /"></td>/n<td><input name=/"button10/" type=button value=/" 退格/" onclick=/"setpassvalue();/"  onDblClick=/"setpassvalue();/" style=/"width:60px;/"></td>/n<td></td>/n</tr>/n<tr align=/"left/" valign=/"middle/">/n<td><input type=button bgtype=/"2/" name=/"button_number4/" value=/" 4 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number5/" value=/" 5 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number6/" value=/" 6 /"></td>/n<td><input type=button bgtype=/"2/" value=/" . /"></td>/n<td><input name=/"button9/" type=button disabled=false  onClick=/"capsLockText();setCapsLock();/"  onDblClick=/"capsLockText();setCapsLock();/" value=/"A-a/" style=/"width:60px;/"></td>/n</tr>/n<tr align=/"left/" valign=/"middle/">/n<td><input type=button bgtype=/"2/" name=/"button_number7/" value=/" 7 /"></td>/n<td><input type=button bgtype=/"2/" name=/"button_number8/" value=/" 8 /"></td>/n<td> <input type=button bgtype=/"2/" name=/"button_number9/" value=/" 9 /"></td>/n<td colspan=/"2/"><input name=/"button12/" type=button onclick=/"OverInput();/" value=/"   确定  /" style=/"width:86px;/"></td>/n</tr>/n</table></td></FORM></tr></table></DIV>");
function addValue(newValue)
{
if (CapsLockValue==0)
{
var str=Calc.password.value;
if(str.length<password1.maxLength)
{
Calc.password.value += newValue;
}   
if(str.length<=password1.maxLength)
{
password1.value=Calc.password.value;
}
}
else
{
var str=Calc.password.value;
if(str.length<password1.maxLength)
{
Calc.password.value += newValue.toUpperCase();
}
if(str.length<=password1.maxLength)
{
password1.value=Calc.password.value;
}
}
}

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;
password1.value=Calc.password.value;
}

function OverInput()
{

var str=Calc.password.value;
password1.value=Calc.password.value;
closekeyboard();
Calc.password.value="";
password1.readOnly=1;
}

function closekeyboard(theForm)
{
softkeyboard.style.display="none";
if(null!=unhideSelect){
unhideSelect();
}
}

function showkeyboard()
{
randomNumberButton();
var th = password1;
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";
password1.readOnly=1;
password1.blur();
document.all.useKey.focus();
if(null!=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();
addValue(thisButtonValue);
}
Calc.elements[i].ondblclick=
function ()
{
var thisButtonValue=this.value;
thisButtonValue=thisButtonValue.trim();
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;
}
}

SmallSoftkey.html

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<META http-equiv="Content-Language" content="UTF-8">
<title>小键盘</title>
<link href="smallSoftkey.css" type="text/css" rel="stylesheet">
<script language="javascript" src="smallSoftkey.js"></script>
</head>
<body>
    <form>
        <div align="center">
            <input id="tiplogPwd" type="password" onclick="password1=this;showkeyboard();this.readOnly=1;Calc.password.value='';" />
   <input type="button" onclick="alert(document.getElementById('tiplogPwd').value);" value="获取密码">
  </div>
    </form>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值