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 OOP类与继承
Nov 15 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
Oct 18 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
Jan 15 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
Sep 23 Javascript
基于jquery实现轮播焦点图插件
Mar 31 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 Javascript
ES6中Iterator与for..of..遍历用法分析
Mar 31 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
vue 自定义全局方法,在组件里面的使用介绍
Feb 28 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
微信小程序实现弹出菜单
Jul 19 Javascript
layer.open 按钮的点击事件关闭方法
Aug 17 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 日期时间处理函数小结
2009/12/18 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
php定时执行任务设置详解
2015/02/06 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Flask框架的学习指南之用户登录管理
2016/11/20 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
人力资源专业推荐信
2013/11/29 职场文书
小学作文评语大全
2014/04/21 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
保研推荐信范文
2015/03/25 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android