`
阅读更多

好久没有写博客了,最近有个需求关于数字键盘的,找了下网上的感觉有点重,太复杂!自己随手写了个符合自己需求的比较简单的,分享一下!希望大家指正

number.spiner.js

/**
 * 公共js方法
 */
;(function(win){
	var NumberSpiner={
		init:function(obj,type){
			
			var that=this;
			var status=obj.getAttribute("data-status");
			that.load(obj,type);
			if(status==1){
				return;
			}
//			obj.onfoucs=function(){
//			};
//			obj.onblur=function(){
//				var number_spinner=document.getElementById("number_spinner");
//				number_spinner.style.display="none";
//			};
		},
		load:function(obj,type){
			var that=this;
			var $obj=$(obj);
			that.currentObj=$obj;
			var $number_spinner=$("#number_spinner");
			if($number_spinner&&$number_spinner.length>0){
				$number_spinner.show();
//				return;
			}else{
				var div=$("<div></div>");
				div.attr("id","number_spinner");
				div.attr("class","number-spinner");
				var tempArr=['<ul class="number-box">'];			
				tempArr.push('<li><div class="number" data-value="7">7</div></li>');
				tempArr.push('<li><div class="number" data-value="8">8</div></li>');
				tempArr.push('<li><div class="number" data-value="9">9</div></li>');
				tempArr.push('<li><div class="number" data-value="4">4</div></li>');
				tempArr.push('<li><div class="number" data-value="5">5</div></li>');
				tempArr.push('<li><div class="number" data-value="6">6</div></li>');
				tempArr.push('<li><div class="number" data-value="1">1</div></li>');
				tempArr.push('<li><div class="number" data-value="2">2</div></li>');
				tempArr.push('<li><div class="number" data-value="3">3</div></li>');
				tempArr.push('<li><div class="number" data-value="0">0</div></li>');
				tempArr.push('<li><div class="number" data-value=".">.</div></li><li><div class="number" data-value="del">删除</div></li>');
				tempArr.push('</ul>');
				div.html(tempArr.join(""));
				$(document.body).append(div);
				$number_spinner=$("#number_spinner");
				$number_spinner.on("click",".number",function(){
					var $this=$(this);
					var data_code=$this.attr("data-value");
					$obj=that.currentObj;
					var val=$obj.val();
					if(data_code){
						switch(data_code){
							case "del":
								var len=val.length;
								if(len==0){
									val="";
								}else{
									val=val.substring(0,len-1);
								}
								$obj.val(val).trigger('input');
								break;
							case ".":
							case "9":
							case "8":
							case "7":
							case "6":
							case "5":
							case "4":
							case "3":
							case "2":
							case "1":
							default:
								val+=data_code;
								$obj.val(val).trigger('input');
								break;
						}
					}
				});
				
				$(document).bind("click",function(e){
					var obj=e.target;
					var $obj=$(obj);
					if(obj.tagName.toUpperCase()=="INPUT"||$obj.hasClass("number")){
						return;
					}else{
						$number_spinner=$("#number_spinner");
						$number_spinner.hide();
					}
				});
			}
//			obj.setAttribute("data-status",1);\
			var w_width=$(window).width(),w_height=$(window).height();
			var offset=getAbsPoint(obj);
			var offset_top=offset.top;
			var offset_left=offset.left;
			var obj_height=$obj.outerHeight();
			var obj_width=$obj.width();
			var _h=$number_spinner.height();
			var _w=$number_spinner.width();
			var top=offset_top;
			var left=offset_left;
			if((offset_top+_h+obj_height)>w_height||type=="top"){
				top=offset_top-_h-2;
			}else{
				top=offset_top+obj_height+2;
			}
			if((offset_left+_w)>w_width){
				left=offset_left-_w;
			}else{
				left=offset_left;
			}
			$number_spinner.css({"top":top,"left":left});
		}
	};
	function getAbsPoint(e){     
		var   x   =   e.offsetLeft,   y   =   e.offsetTop;
		while(e=e.offsetParent){   
			x   +=   e.offsetLeft;
			y   +=   e.offsetTop;
		}
		console.log("x:"+x+","+"y:"+y);
		return {left:x,top:y};
	}  
	win['Team777NumberSpiner']=NumberSpiner;
})(window);

 基本css样式:

less版

.number-spinner{
	.posa;
	z-index:3;
//	.p(3px);
	.number-box{
		.p(2px);
		.bc(@white);
		.oh;
		li{
			.w(33.3%);
			.fl;
			cursor:pointer;
//			.h(45);
			.lh(45);
			.number{
				.m(2px);
				.yellow-style;
				.tc;
			}
		}
	}
}

 css版

.number-spinner {
  position: absolute;
  z-index: 3;
}
.number-spinner .number-box {
  padding: 2px;
  background-color: #ffffff;
  overflow: hidden;
}
.number-spinner .number-box li {
  width: 33.3%;
  float: left;
  cursor: pointer;
  line-height: 45px;
}
.number-spinner .number-box li .number {
  margin: 2px;
  background: #FDA24D;
  /* 一些不支持背景渐变的浏览器 */
  background: -moz-linear-gradient(top, #fda24d, #fdda6f);
  background: -webkit-gradient(linear, 0 0, 0 bottom, from(#fda24d), to(#fdda6f));
  background: -o-linear-gradient(top, #fda24d, #fdda6f);
  border-radius: 5px;
  text-align: center;
}

 

引用处理

由于是用angularjs处理  

<input type="text" class="input-txt" ng-model="orderManager.mdseCode" ng-click="orderManager.getNumber($event)">

 

$scope.orderManager.getNumber=function($event,type){	
     Team777NumberSpiner.init($event.target,type);
};

 

分享到:
评论

相关推荐

    c#简易 数字键盘/手机键盘,button控件与textbox的互动

    通过以上步骤,我们可以创建一个C#实现的简易数字键盘,实现用户在`TextBox`中输入数字的功能,适用于拨号或其他类似需求。这个项目涉及了C# UI设计、事件处理和用户交互的基本概念,是学习C#编程的好起点。

    C# 数字键盘实现

    压缩包中的"OskNum"可能包含了一个简单的数字键盘实现示例。你可以查看和学习这个示例的源代码,理解其工作原理,并根据需要进行修改和扩展。 通过以上步骤,你应该能够使用C#构建一个基本的数字键盘应用。记住,...

    jquery数字键盘银行网站数字键盘

    "jquery数字键盘银行网站数字键盘"就是一个针对这种需求的解决方案。它基于jQuery库,提供了简洁易用的数字输入键盘界面,确保用户只能输入数字,从而防止了通过常规键盘输入时可能存在的安全风险。 jQuery是一个...

    自定义数字键盘

    在iOS开发中,有时我们可能需要为特定场景创建自定义的数字键盘,以提供更便捷或个性化的用户体验。本文将详细解析如何在iOS应用中实现一个自定义数字键盘。 首先,我们要了解iOS中的键盘类型。在UIKit框架中,`...

    QT下数字键盘

    这个项目实现了一个可复用的数字键盘类,通过简单地实例化并调用`show()`方法,就可以在应用程序中显示数字键盘。下面我们将深入探讨这个数字键盘的实现细节、相关Qt组件和API,以及如何集成到你的项目中。 首先,`...

    简单自定义纯数字键盘

    总结起来,创建一个简单的自定义纯数字键盘涉及以下步骤: 1. 创建自定义键盘布局,包括数字按键和可能的回退键。 2. 为每个按键设置点击事件监听器,处理用户输入。 3. 应用适当的设计风格,以匹配系统UI。 4. 考虑...

    js 数字键盘

    在本项目中,我们将探讨如何使用jQuery库来创建一个简单的数字键盘,以便用户能更方便地在特定文本框中输入数字,特别是用于密码输入等场景。 jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画...

    c# 数字键盘控件

    以上代码示例展示了如何创建一个简单的数字键盘控件,并处理点击事件。`NumInput`事件允许外部订阅者接收用户输入的数字。 在实际应用中,你可能还需要考虑更多的细节,如输入验证、触摸友好性、自定义样式等。`MIS...

    android自定义数字键盘

    以上就是实现一个简单的Android自定义数字键盘的基本步骤。这个键盘可以根据实际需求进行扩展,例如添加更多特殊功能按钮,如加减乘除符号,或者增加对多行文本的支持。同时,也可以考虑优化键盘的视觉样式,使其与...

    Android-Android自定义键盘数字键盘和字母键盘

    例如,一个简单的数字键盘布局可能如下: ```xml &lt;!-- 其他数字键 --&gt; &lt;!-- 更多行 --&gt; ``` 3. 实现键盘逻辑 在`CustomKeyboardService`类中,我们需要处理键盘的点击事件。在XML布局中定义的`onClick`...

    jQuery虚拟数字键盘插件

    1. **易于集成**:jQuery虚拟数字键盘插件调用简单,只需要在HTML页面中引入必要的JavaScript和CSS文件,然后通过jQuery选择器对目标输入框应用特定的事件触发键盘显示。 2. **自定义配置**:该插件通常允许开发者...

    使用HTML和jQuery实现6位密码输入和数字键盘绘制

    使用HTML和jQuery实现6位密码。使用H5结合JQuery,模仿支付宝和微信支付的六位密码输入,重新绘制定义数字键盘,在规定的数字键盘中的数字进行点击,将密码填进六格的输入框,一个简单的小demo,适合新手学习交流

    数字键盘(纯js/jq两版)

    本项目提供了一个“数字键盘”,它具有纯JavaScript(js)和jQuery(jq)两个版本,适用于创建一个只允许输入数字的简单键盘。 首先,我们来探讨纯JavaScript实现的数字键盘。JavaScript是一种广泛使用的客户端脚本...

    纯数字键盘(兼容移动端)

    总结来说,这个“纯数字键盘(兼容移动端)”项目展示了如何使用jQuery、HTML和CSS这三种核心技术来创建一个简单易用、适应不同设备的数字输入界面。通过学习和理解这个项目,开发者可以提升在前端开发领域的技能,...

    ios-纯数字键盘.zip

    这个“ios-纯数字键盘.zip”资源包提供了一个简单易用的解决方案,它允许开发者快速集成一个全数字的键盘到他们的应用程序中。以下是关于这个主题的详细知识: 1. **自定义键盘**: iOS系统默认提供了多种键盘类型,...

    纯数字键盘123.rar

    本项目名为“纯数字键盘123.rar”,它提供了一个专用于输入数字的键盘组件,适用于Qt Widget和Qt for Android平台。这样的设计旨在为用户在需要输入数值时提供便利,比如在填写电话号码、密码、金额等场景。 首先,...

    ios-自定义数字键盘.zip

    这个“ios-自定义数字键盘.zip”文件就提供了这样的解决方案。让我们深入探讨一下这个自定义数字键盘的实现原理、使用方法以及可能的应用场景。 首先,我们要理解的是,iOS中的键盘并不像Android那样可以通过简单...

    Android-DigitalKeyboard简单的仿微信数字键盘

    本文将详细解析如何实现“Android-DigitalKeyboard”,一个简单的仿微信数字键盘项目。 首先,理解Android控件是构建用户界面的基础。在Android开发中,我们通常使用TextView、EditText、Button等原生控件,但有时...

    labview-numberkeyboard.rar_labview_labview数字键盘_numberKeyBoard_数字

    4. **数值处理**:为了实现数字键盘的功能,程序可能包括对输入数字的处理,比如验证输入的有效性,或者进行简单的计算。 5. **数据流模型**:LabVIEW采用数据流编程,意味着程序的执行依赖于数据的可用性,而不是...

Global site tag (gtag.js) - Google Analytics