jQuery 虚拟数字键盘代码

2023-10-25 14:30

本文主要是介绍jQuery 虚拟数字键盘代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先上效果:

 

   js直接应用:  $('input').mynumkb(); 就出来效果

 

HTML:

<input maxlength="4" type="text" onkeyup="if (this.value==this.value2) return; if (this.value.search(/^\d{0,4}$/)==-1) this.value=(this.value2)?this.value2:'';else this.value2=this.value;" placeholder="请输入正整数" >

 

CSS:

 

<style>.clearfix:after {visibility: hidden;display: block;font-size: 0;content: " ";clear: both;height: 0;}.mykb-box{width:390px;height:370px;background:rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,endColorstr=#99000000);box-shadow:0 0 10px rgb(43, 42, 42);padding:20px;border-radius:10px;user-select: none;-ms-user-select: none;position:absolute;display: none;}.mykb-box ul,.mykb-box li{list-style: none;}.mykb-box li{width:70px;height:70px;line-height:70px;text-align: center;background:#f5f5f5;border-radius:10px;font-weight:bold;margin:10px;float:left;box-shadow: 0px 2px 1px #000;color:#1b50a2;font-size:24px;cursor:pointer;}.mykb-box li.active{box-shadow:0px -2px 1px #000;}.mykb-box .func{color:#fff;width:100px;}.mykb-box .exit{background:#F44336;}.mykb-box .del{background:#ff9800}.mykb-box .clearall{background:#2196F3}.mykb-box .sure{background: #4CAF50;width:190px;}
</style>

 

 

JS:

/*** Created by on 2019/7/11.** 数字键盘插件 js*/(function($){var _count = 0;var Mynumkb = function(element, options){_count++;this.count = _count;this.$element = $(element);this.$element.attr("data-count",this.count);this.options = $.extend({},$.fn.mynumkb.defaults, options);this.init();}Mynumkb.prototype = {constructor: Mynumkb,init:function(){var me= this;me.render();me.bind();me.initHtml();},render:function(){var me = this;me.$eparentNode = me.$element.parent();},bind:function(){var me = this;me.$element.on("click",$.proxy(me['_eClick'],me));$(document).on("mousedown","#mykeyboard"+me.count+" li",$.proxy(me['_limousedown'],me));$(document).on("mouseup","#mykeyboard"+me.count+" li",$.proxy(me['_limouseup'],me));$(document).on("click","#mykeyboard"+me.count+" li",$.proxy(me['_liclick'],me));},initHtml:function(){var me = this;var _html = ['<div class="mykb-box" id="mykeyboard'+me.count+'">','<ul class="num-key clearfix">','<li class="num">1</li>','<li class="num">2</li>','<li class="num">3</li>','<li class="func exit">退出</li>','<li class="num">4</li>','<li class="num">5</li>','<li class="num">6</li>','<li class="func del">退格</li>','<li class="num">7</li>','<li class="num">8</li>','<li class="num">9</li>','<li class="func clearall">清除</li>','<li class="num">0</li>','<li class="num">.</li>','<li class="func sure">确定</li>','</ul>','</div>',].join("");$("body").append(_html);me.setPosition();},setPosition:function(){var me = this;var parentNode = me.$eparentNode;var $element = me.$element;$("body").css("position","relative");var height = $element.outerHeight();var width = $element.outerWidth();var position = $element.position();var $keyboard = $("#mykeyboard"+me.count);var ulWidth = $keyboard.outerWidth();var ulHeight = $keyboard.outerHeight();var left = position.left;$keyboard.css({top:position.top+height+30+"px",left:left+width+30+"px"});},_eClick:function(e){var me = this;var count = me.$element.data("count");var $keyboard = $("#mykeyboard"+count);$keyboard.fadeIn(100).siblings(".mykb-box").hide();},_liclick:function(e){var me = this;var $target = $(e.target);if($target.hasClass("del")){//退格me.setValue("del");}else if($target.hasClass("exit")||$target.hasClass("sure")){//退出--确定
                me.close();}else if($target.hasClass("clearall")){//清除me.$element.val("");}else{//输入其他数字var str = $target.text();me.setValue("add",str);}},_limousedown:function(e){var me = this;var val = $(e.target).html();$(e.target).addClass("active").siblings().removeClass("active");},_limouseup:function(e){var me = this;var val = $(e.target).html();$(e.target).removeClass("active");},setValue:function(type,str){var me = this;var curpos = me.getCursorPosition();var val = me.$element.val();var newstr = "";if(type == 'add'){newstr = me.insertstr(val,str,curpos);me.$element.val(newstr);me.$element.textFocus(curpos+1);}else if(type == 'del'){newstr = me.delstr(val,curpos);me.$element.val(newstr);me.$element.textFocus(curpos-1);}},insertstr:function(str,insertstr,pos){var str = str.toString();var newstr = str.substr(0,pos)+''+insertstr+''+str.substr(pos);return newstr;},delstr:function(str,pos){var str = str.toString();var newstr = "";if(pos != 0){newstr = str.substr(0,pos-1)+str.substr(pos);}else{newstr = str;}return newstr;},getCursorPosition:function(){var me = this;var $element = me.$element[0];var cursurPosition=-1;if($element.selectionStart!=undefined && $element.selectionStart!=null){//非IE浏览器cursurPosition= $element.selectionStart;}else{//IEvar range = document.selection.createRange();range.moveStart("character",-$element.value.length);cursurPosition=range.text.length;}return cursurPosition;},close:function(){var me = this;var count = me.$element.data("count");var $keyboard = $("#mykeyboard"+count);$keyboard.fadeOut(100);me.$element.attr("isshowkb","false");}};$.fn.mynumkb = function (option) {return this.each(function () {var options = typeof option == 'object' ? option : {};var data = new Mynumkb(this, options);})}$.fn.mynumkb.defaults = {};$.fn.mynumkb.Constructor = Mynumkb;})(jQuery);
(function($){$.fn.textFocus=function(v){var range,len,v=v===undefined?0:parseInt(v);this.each(function(){if(navigator.userAgent.msie){range=this.createTextRange();v===0?range.collapse(false):range.move("character",v);range.select();}else{len=this.value.length;v===0?this.setSelectionRange(len,len):this.setSelectionRange(v,v);}this.focus();});return this;}
})(jQuery);

 

转载于:https://www.cnblogs.com/pyspang/p/11171572.html

这篇关于jQuery 虚拟数字键盘代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/283187

相关文章

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

mysql查询使用_rowid虚拟列的示例

《mysql查询使用_rowid虚拟列的示例》MySQL中,_rowid是InnoDB虚拟列,用于无主键表的行ID查询,若存在主键或唯一列,则指向其,否则使用隐藏ID(不稳定),推荐使用ROW_NUM... 目录1. 基本查询(适用于没有主键的表)2. 检查表是否支持 _rowid3. 注意事项4. 最佳实

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框