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 相关文章推荐
jquery cookie实现的简单换肤功能适合小网站
Aug 25 Javascript
JavaScript将页面表格导出为Excel的具体实现
Dec 27 Javascript
编写自己的jQuery提示框(Tip)插件
Feb 05 Javascript
JavaScript获取当前cpu使用率的方法
Dec 15 Javascript
小白谈谈对JS原型链的理解
May 03 Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 Javascript
React 组件转 Vue 组件的命令写法
Feb 28 Javascript
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 jQuery
用element的upload组件实现多图片上传和压缩的示例代码
Feb 12 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
vue $set 给数据赋值的实例
Nov 09 Javascript
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
PHP中each与list用法分析
2016/01/08 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
什么是lambda函数
2013/09/17 面试题
医学生毕业自我鉴定
2014/03/26 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
数学备课组工作总结
2015/08/12 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
生活委员竞选稿
2015/11/21 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang
优化Mysql查询的示例
2022/04/26 MySQL