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实现把rgb颜色转换成16进制颜色的方法
Jun 01 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
详解JS-- 浮点数运算处理
Nov 28 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
JavaScript轮播图简单制作方法
Feb 20 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
Vue响应式原理详解
Apr 18 Javascript
详解Ant Design of React的安装和使用方法
Dec 27 Javascript
详解Nuxt内导航栏的两种实现方式
Apr 16 Javascript
vue实现数字滚动效果
Jun 29 Javascript
vue设置全局访问接口API地址操作
Aug 14 Javascript
浅谈react路由传参的几种方式
Mar 23 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
解析MySql与Java的时间类型
2013/06/22 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP7.0版本备注
2015/07/23 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
python多线程抽象编程模型详解
2019/03/20 Python
python3获取url文件大小示例代码
2019/09/18 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
python自定义函数def的应用详解
2020/06/03 Python
详解Python设计模式之策略模式
2020/06/15 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
物流合作计划书
2014/01/10 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
财务担保书范文
2014/04/02 职场文书
火灾现场处置方案
2014/05/28 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
婚礼新人答谢词
2015/01/04 职场文书
客房领班岗位职责
2015/02/11 职场文书
小学生读书笔记范文
2015/06/30 职场文书
技术入股协议书
2016/03/22 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python