JavaScript网页键盘

/*JS键盘
*实现大小写切换,使用时需指定页面上出现的位置,及接收输入的控件名称.
*边框文字样式需在css中指定.
*div1:出现的位置控件名称
*div2:接收输入的控件名称
*/
var shift=false;//shift开关
var caps=false;//caps开关
var nowchar,nownum;
var i;
var upcolor="#cfffff";//caps,shift按下抬起颜色
var downcolor="#5fffff";


function createKeyBoard(div1,div2){
//为了赋值和取值方便,定义数组
var valuechar1=new Array("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");
var valuechar2=new Array("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");
var valuenum1=new Array("1","2","3","4","5","6","7","8","9","0");
var valuenum2=new Array("!","@","#","$","%","^","&","*","(",")");
//创建表格
var otable=document.createElement("table");
otable.style.border="1px solid green";
otable.setAttribute("width","340");
otable.setAttribute("height", "60");
var otbody=document.createElement("tbody");
otable.appendChild(otbody);

//加入第一行
otbody.insertRow(0);

//闭包函数,以防止无法在循环中定义值i
function tt(p,now) {
   this.click=function(){
    document.getElementById(div2).value+=now[p];
   }
}

//判断开关情况决定显示字符
if((shift==true&&caps==true)||(shift==false&&caps==false)){
   nowchar=valuechar1;
}else{
   nowchar=valuechar2;
}
if(shift==false){
   nownum=valuenum1;
}else{
   nownum=valuenum2;
}


for(i=0;i<14;i++){
   otbody.rows[0].insertCell(i);
   otbody.rows[0].cells[i].innerText=nowchar[i];
   var col=new tt(i,nowchar);
   otbody.rows[0].cells[i].attachEvent("onclick",col.click);
}
//加入第二行
otbody.insertRow(1);
for(i=0;i<12;i++){
   otbody.rows[1].insertCell(i);
   otbody.rows[1].cells[i].innerText=nowchar[i+14];
   var col=new tt(i+14,nowchar);   
   otbody.rows[1].cells[i].attachEvent("onclick",col.click);
}

//caps
otbody.rows[1].insertCell(12);
otbody.rows[1].cells[12].colSpan=2;
if(caps==true) {otbody.rows[1].cells[12].style.backgroundColor=downcolor;}
else {otbody.rows[1].cells[12].style.backgroundColor=upcolor;}
otbody.rows[1].cells[12].appendChild(document.createTextNode("caps"));
otbody.rows[1].cells[12].attachEvent("onclick",chcaps);

//加入第三行
otbody.insertRow(2);
for(i=0;i<10;i++){
   otbody.rows[2].insertCell(i);
   otbody.rows[2].cells[i].innerText=nownum[i];
   var col=new tt(i,nownum);   
   otbody.rows[2].cells[i].attachEvent("onclick",col.click);
}

//shift
otbody.rows[2].insertCell(10);
otbody.rows[2].cells[10].colSpan=4;
if(shift==true) {otbody.rows[2].cells[10].style.backgroundColor=downcolor;}
else {otbody.rows[2].cells[10].style.backgroundColor=upcolor;}
otbody.rows[2].cells[10].attachEvent("onclick",chshift);
otbody.rows[2].cells[10].innerText="shift";
document.getElementById(div1).appendChild(otable);

//caps按钮执行函数
function chcaps(){
   caps=!caps;
   document.getElementById(div1).removeChild(otable);
   createKeyBoard(div1,div2);
}
//shift按钮执行函数
function chshift(){
   shift=!shift;
   document.getElementById(div1).removeChild(otable);
   createKeyBoard(div1,div2);
}
}

效果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值