js虚拟数字小键盘

效果图

页面代码:

@Html.TextBoxFor(m=>Model.FBP[i].RealNumb,new{onclick="showKeyboard(‘txtRealNumbOpr‘)", id="txtRealNumbOpr"})

引用的js文件:

<script src="@Url.Content("~/Content/jquery.keyboard/js/keyboard.js")" type="text/javascript"></script>
<link href="@Url.Content("~/Content/jquery.keyboard/css/keyboardnew.css")" rel="stylesheet" type="text/css" />

jquery代码:

css文件

@charset "utf-8";
/*
@软键盘style
*/
.kbkey,.kbmouseover,#kbclose,#kbback {background:url(keyboard.png) no-repeat;}

.kbdiv { background:#fff; border:3px solid #e25102;font-size:12px;width:240px;padding:2px;font-family:Arial, Helvetica, sans-serif; border-radius:3px;box-shadow:2px 2px 3px #aaa; }
.kbdiv em {font-style:normal;cursor:pointer;}
.kbkey {width:60px;height:60px;line-height:60px;display:inline-block;text-align:center;font-size:24px;margin:4px;}
/*.kbmouseover {background-position:-21px 0;color:#fff;}*/
.kbdiv table {border-collapse:collapse;}
#kbclose {background:#000;width:68px;height:20px;line-height:20px; text-align:center;color:#fff;display:block;font-size:12px;}
#kbback {background:#000;width:68px;height:20px;line-height:20px; text-align:center;color:#fff;display:block;font-size:12px;margin-left:3px;}

js文件:

/*
 * JS Keyboard - 随机生成的软键盘.
*/

function RandomSort(a,b){
    return Math.random() - 0.5;
}

function getRandomNum()
{
    var numArray=new Array();
    var i;
    for(i=0;i<10;i++)
      numArray[i]=i;//生成一个数组
    //numArray.sort(RandomSort);
    return numArray;
}

function getRandomChar()
{
    var charArray=new Array();
    var i,j;
    for(i=0,j=97;j<123;i++,j++)
      charArray[i]=j;//生成字母表
    charArray.sort(RandomSort);
    //对字母进行翻译
    for(i=0;i<charArray.length;i++)
        charArray[i] = String.fromCharCode(charArray[i]);
    return charArray;
}

function showKeyboard(inputId)
{
    var kb = $(‘#yh_KeyBoard‘);
    if (kb.length!=0)
    {
        kb.remove();
        return false;
    }

    kb = $(‘<div id="yh_KeyBoard" class="kbdiv"></div>‘);
    var i=0;
    var keyboard = ‘<div class="kbtable">‘;
    numArray = getRandomNum();
    charArray = getRandomChar();
    for(i=0;i<10;i++)
    {
        keyboard += ‘<em class="kbkey">‘+numArray[i]+‘</em>‘;
    }
    keyboard += "</div><table><tr>";
//    for(i=0;i<26;i++)
//    {
//        if (i%10==0 && i>0)
//            keyboard += "</tr><tr>";
//        keyboard += ‘<td class="kbkey">‘+charArray[i]+‘</td>‘;
//    }
    //keyboard += ‘<td id="kbcaps" colspan="2" class="kbcolspan">大小写</td>‘;
    keyboard += ‘<td><em id="kbclose" class="kbcolspan">确认</em></td>‘;
    keyboard += ‘<td><em id="kbback" class="kbcolspan">退 格</em></td>‘;
    keyboard += ‘</tr></table>‘;
    kb.html(keyboard);
    kb.appendTo(‘body‘);

$("em",kb).mouseover(function() {
        this.className += " kbmouseover";
    }).mouseout(function() {
        this.className = this.className.replace(" kbmouseover","");
    }).click(function() {

        if(this.id == "kbclose") {
            kb.remove();
            return false;
        }
//        else if(this.id == "kbcaps") {
//            $.each($(".kbkey",kb),function(i,o) {
//                var num = o.innerHTML.charCodeAt(0);
//                if(num>96 && num<123)
//                    o.innerHTML = o.innerHTML.toUpperCase();
//                else if(num>64 && num<91)
//                    o.innerHTML = o.innerHTML.toLowerCase();
//            });
//
//            return false;
//        }
        //退格
        if(this.id == ‘kbback‘){
            var pw = $(‘#txtRealNumbOpr‘).val();
            //alert(pp)
            $(‘#txtRealNumbOpr‘).val(pw.substr(0, pw.length - 1));
            return false;
        }

        $("#"+inputId).attr("value",$("#"+inputId).val()+this.innerHTML);
    });

    var offset = $("#"+inputId).offset();
    var left = offset.left;
    var height = $("#"+inputId).height();
    var top = offset.top+height+8;
    kb.css({"left": left+"px", "top": top+"px","position":"absolute","z-index":"100"});
    return false;
}
时间: 2025-01-03 13:53:16

js虚拟数字小键盘的相关文章

点击含下拉菜单的列表/表单按钮:通过JS创建虚拟按钮并点击

${JsCode} | Get Element Attribute | XPATH=//table[@class='mnubar']//tr//td//span[text()='${MenuArr[0]}' and @class='mnuBtn']/parent::span/table[@class='mnuList']//tr/td[text()='${MenuArr[1]}']/parent::[email protected] 注释: 1.MenuArr为传入的需要点击的按钮路径,如:新增

引用的时候js不能使用虚拟路劲,调试时用排除法测试

今天碰到2个问题,搞了半天都没明白,又不报错: 就是js的问题:-->我返回了一个json,返回的json是正确的,但是view页面接受不到这个虚拟对象. 完全懵了,不知道为什么view页面接受不到这个json,调试也没反应,根本走不了调试,后来请教了大神. 他通过重新写了一个简单的js,然后测试,还是有问题,那只能是引用的问题了,但是这个项目别人也是引用的这个js都没有问题, 所以只能是“引用的时候js不能使用虚拟路劲!” 最重要的是js排除法:即先写一个简单的js测试.

原生js和css写虚拟键盘

代码来源忘记是哪个大神的了,抱歉抱歉 放上源码: <!-- 虚拟键盘 --> <!DOCTYPE html> <html> <head> <meta charset="utf-8" > <title>虚拟键盘</title> <style> #inputArea{position: absolute; top: 30%; left: 20%;} .keyboardBox{position:

react.js 从零开始(七)React (虚拟)DOM

React 元素 React 中最主要的类型就是 ReactElement.它有四个属性:type,props,key 和ref.它没有方法,并且原型上什么都没有. 可以通过 React.createElement 创建该类型的一个实例. var root = React.createElement('div'); 为了渲染一个新的树形结构到 DOM 中,你创建若干个 ReactElement,然后传给React.render 作为第一个参数,同时将第二个参数设为一个正规的 DOM 元素(HTM

使用Three.js绘制一个虚拟城市

这篇文章解释了如何使用代码来编写一座3D立体“城市”.这个代码是由@ mrdoob最新发布的演示Demo.我发现这个演示的算法很优雅,是一个简单而有效的解决方案,所以我发了一个帖子解释它. 关于算法的一些评论 在我们将关注焦点置于问题的细节之前,把握下问题的整体和全局是很有帮助的.这个3D虚拟城市所使用的算法是完全由程序所生成的,这意味着整个城市 是动态建立,而不参考任何模板.这个算法相当优雅,且不超过100行javascript代码.这个算法的原理是怎么样的呢?简而言之,每一个建筑是一个 立方

JS高级程序设置笔记(五)

13章:事件 JavaScript与Html之间的交互,是通过事件实现的.可以使用侦听器(或者处理程序)来预定事件. 13.1事件流: 什么是事件流:事件流描述的是从页面中接收事件的顺序. 13.1.1事件冒泡 什么是事件冒泡:可以用一个形象的比喻来描述.小鱼吐泡泡,小鱼在水里,泡泡会从水的最底部一直到水面上结束.事件冒泡和这个意思相近,IE的事件流叫做事件冒泡,是从最具体的元素开始,一直延伸到最顶层的那个结构.意思就是说,比如你创建了一个鼠标点击事件,当你点击这个元素的时候,浏览器会认为你点击

虚拟DOM

DOM(Document Object Model)是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的.如果对前端工作进行抽象的话,主要就是维护状态和更新视图:而更新视图和维护状态都需要DOM操作. 在jQuery出现以前,我们直接操作DOM结构,这种方法复杂度高,兼容性也较差:有了jQuery强大的选择器以及高度封装的API,我们可以更方便的操作DOM,jQuery帮我们处理兼容性问题,同时也使DOM操作变得简单:MVVM使用数据双向绑定,使得我们完全不需要

HTML+CSS+JS实现TABLE固定列(常见浏览器兼容)的最佳实践

BS架构的企业级应用中,当一个表格列数较多时,用户一个常见的需求就是把前面几个重要的列固定住,这样拖动滚动条时固定的列会方便用户查看数据,用户体验很好.一些重量级的JS组件库也都有这个功能,那么有没有更简单的方法实现这个功能呢? 这个需求常见的解决方案是使用表格拼接的方法,这个方案如果要制作静态的网页,或者功能简单的动态页面,逻辑比较简单,技术上也不复杂,很容易实现,但是如果要做成组件,动态功能较多的话,就需要写大量的冗余代码,难以维护,甚至于一个简单的功能,都需要些很多的代码,比如事件处理等,

IOS系统下虚拟键盘遮挡文本框问题的解决

最近在项目中发现同样的代码在Android端微信网页中点击文本框唤出的虚拟键盘不会遮挡文本框,但是在IOS端的微信网页中点击文本框唤出的键盘却在大部分情况下会遮挡文本框 经过高人指点,这个问题终于解决了 下面说说解决办法: 主要代码 document.body.scrollTop = document.body.scrollHeight; 然后在文本框获取焦点的时候,可以定义一个计时器,一直执行上面的那句话 在文本框失去焦点的时候,就把之前的计时器清除掉即可 js写法: let interval