JS实现自定义简单网页软键盘效果代码


Posted in Javascript onNovember 05, 2015

本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:

这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学习,希望对您有用处。

运行效果截图如下:

JS实现自定义简单网页软键盘效果代码

在线演示地址如下:

具体代码如下:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style>
* {
 padding:0;
 margin:0;
}
body {
 background:#fff;
}
th, td {
 border:1px solid #ccc;
 padding:2px 0;
 text-align:center;
}
td {
 cursor:pointer
}
div {
 border:1px solid #999;
 float:left;
 padding:1px;
 display:none;
}
.num {
 color:blue;
}
</style>
<script>
var htmlCode = {
 "&" : "&",
 '"' : "\"",
 "<" : "<",
 ">" : ">",
}
function test(){
 var input = document.getElementById("input");
 var e = window.event || test.caller.arguments[0];
 var el = e.target || e.srcElement;
 if(el.tagName.toLowerCase() == "td" && el.rowSpan <= 1 && el.colSpan <= 1 ){
  var str = el.innerHTML;
  str = htmlCode[str] || str;
  input.value += str;
 }
 if(el.innerHTML == "退格"){
  input.value = input.value.slice(0,-1); 
 }
 if(el.innerHTML == "切换大/小写"){
  var els = document.getElementsByTagName("td");
  for(var i = 0, l = els.length; i < l; i++){
   var str = els[i].innerHTML;
   if(/^[a-z]$/.test(str))
    els[i].innerHTML = str.toUpperCase();
   if(/^[A-Z]$/.test(str))
    els[i].innerHTML = str.toLowerCase(); 
  }
 }
 if(el.innerHTML == "ENTER"){
  ctrKeyboard();
 }
}
function ctrKeyboard(){
 var el = document.getElementById("keyboard");
 if(el.offsetWidth > 0)
  el.style.display = "none";
 else {
  el.style.display = "block";
  sortNum(); 
  capsInit();
 }
}
function capsInit(){
 var els = document.getElementsByTagName("td");
 for(var i = 0,j = 0, l = els.length; i < l; i++){
  var str = els[i].innerHTML;
  if(/^[A-Z]$/.test(str))
   els[i].innerHTML = str.toLowerCase(); 
 }
}
function sortNum (){
 var arr = [0,1,2,3,4,5,6,7,8,9].sort(function(){
  return Math.random() > 0.5?1:-1;
 });
 var els = document.getElementsByTagName("td");
 for(var i = 0,j = 0, l = els.length; i < l; i++){
  var str = els[i].innerHTML;
  if(/^\d$/.test(str))
   els[i].innerHTML = arr[j++];
 } 
}
</script>
</head>
<body>
<input id="input" readonly="readonly"/><input type="button" value="打开/关闭 键盘" onclick="ctrKeyboard()"/>
<br>
<br>
<div id="keyboard">
 <table cellspacing="1" width="480" onclick="test()">
 <tr>
  <th colspan="16">键盘模拟输入密码器</th>
 </tr>
 <tr>
  <td>~</td>
  <td>!</td>
  <td>@</td>
  <td>#</td>
  <td>$</td>
  <td>%</td>
  <td>^</td>
  <td>&</td>
  <td>*</td>
  <td>(</td>
  <td>)</td>
  <td>_</td>
  <td>+</td>
  <td>|</td>
  <td rowspan="2" width="120">退格</td>
 </tr>
 <tr>
  <td>`</td>
  <td class="num">1</td>
  <td class="num">2</td>
  <td class="num">3</td>
  <td class="num">4</td>
  <td class="num">5</td>
  <td class="num">6</td>
  <td class="num">7</td>
  <td class="num">8</td>
  <td class="num">9</td>
  <td class="num">0</td>
  <td>-</td>
  <td>=</td>
  <td>\</td>
 </tr>
 <tr>
  <td>q</td>
  <td>w</td>
  <td>e</td>
  <td>r</td>
  <td>t</td>
  <td>y</td>
  <td>u</td>
  <td>i</td>
  <td>o</td>
  <td>p</td>
  <td>{</td>
  <td>}</td>
  <td>[</td>
  <td>]</td>
  <td colspan="2">切换大/小写</td>
 </tr>
 <tr>
  <td>a</td>
  <td>s</td>
  <td>d</td>
  <td>f</td>
  <td>g</td>
  <td>h</td>
  <td>j</td>
  <td>k</td>
  <td>l</td>
  <td>:</td>
  <td>"</td>
  <td>;</td>
  <td>'</td>
  <td colspan="3" rowspan="3">ENTER</td>
 </tr>
 <tr>
  <td>z</td>
  <td>x</td>
  <td>c</td>
  <td>v</td>
  <td>b</td>
  <td>n</td>
  <td>m</td>
  <td><</td>
  <td>></td>
  <td>?</td>
  <td>,</td>
  <td>.</td>
  <td>/</td>
 </tr>
 </table>
</div>
</body>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
node.js中的fs.appendFileSync方法使用说明
Dec 17 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
Oct 12 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
js canvas实现擦除效果示例代码
Apr 26 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
微信小程序中使用ECharts 异步加载数据的方法
Jun 27 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
实例讲解React 组件
Jul 07 Javascript
如何在JavaScript中使用localStorage详情
Feb 04 Javascript
JavaScript实现cookie的写入、读取、删除功能
Nov 05 #Javascript
JS实现slide文字框缩放伸展效果代码
Nov 05 #Javascript
如何防止JavaScript自动插入分号
Nov 05 #Javascript
javascript常用函数(2)
Nov 05 #Javascript
使用JavaScript和CSS实现文本隔行换色的方法
Nov 04 #Javascript
javascript常用函数(1)
Nov 04 #Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
Nov 04 #Javascript
You might like
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
javascript计时器详解
2015/02/28 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
Vue.use源码分析
2017/04/22 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
python实现在windows服务中新建进程的方法
2015/06/30 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Python学习入门之区块链详解
2017/07/25 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
python把转列表为集合的方法
2019/06/28 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
初中校园广播稿
2014/02/02 职场文书
班长自荐书范文
2014/02/11 职场文书
演讲主持词
2014/03/18 职场文书
旅游活动总结
2014/08/27 职场文书
平遥古城导游词
2015/02/03 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python