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使用prototype定义对象类型(转)[
Dec 22 Javascript
javascript 事件绑定问题
Jan 01 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
Aug 17 Javascript
node.js require() 源码解读
Dec 13 Javascript
js实现不重复导入的方法
Mar 02 Javascript
jquery心形点赞关注效果的简单实现
Nov 14 Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 Javascript
详细AngularJs4的图片剪裁组件的实例
Jul 12 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 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和MySQL保存和输出图片
2006/10/09 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
浅谈Python爬取网页的编码处理
2016/11/04 Python
Apache部署Django项目图文详解
2019/07/30 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
学生请假条格式
2014/04/11 职场文书
初中英语课后反思
2014/04/25 职场文书
销售求职信范文
2014/05/26 职场文书
大二学生自我检讨书
2014/10/23 职场文书
北京英文导游词
2015/02/12 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server