CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库


Posted in Javascript onFebruary 07, 2010

简介

实现类似于Photoshop控制面板输入文本数字的效果,所以名称叫做PsWheel。用于控制输入数字类型文本框实现鼠标滚轮上下滑动改变值,支持正整数、小数类型输入文本。
兼容IE/Firefox/Opera/Safari/Chrom
可定义滚动变化间隔值,支持整数、浮点数
双击恢复初始值
仅3.92K,压缩后2.67K
代码

/* 
* cutePsWheel JS 
* Description:A js liabary which control the text type of input box can plus or minus value like Photoshop 
* Author:walkingp 
* Site:http://www.51obj.cn/ 
* E-mail:walkingp@126.com 
* Last Modified:2010-2-5 
*/ 
//Initial the wheel scroll event 
var _orientValue=[];//orient value 
var _interval=[]; 
var _length=[]; 
function InitScrollFunc(){ 
var eles=GetObj(); 
for(var i=0;i<eles.length;i++){ 
if(document.addEventListener){ 
(function(i){eles[i].addEventListener('DOMMouseScroll',function(e){e.preventDefault();e.stopPropagation();var direct=e.detail<0?1:-1;ScrollText(eles[i],direct);},false);})(i); 
eles[i].addEventListener('dblclick',RestoreOrientValue,false); 
eles[i].addEventListener('blur',RemoveScrollFunc,false); 
//eles[i].addEventListener('mouseover',SetFocus,false); 
}//W3C/Mozila 
(function(i){eles[i].onmousewheel=function(){ScrollFunc(event,eles[i]);}})(i);//IE/Opera/Chrome/Safari 
(function(i){eles[i].ondblclick=function(){RestoreOrientValue(eles[i]);;}})(i); 
(function(i){eles[i].onblur=function(){RemoveScrollFunc(eles[i]);;}})(i);//Remove the wheel scroll event 
(function(i){eles[i].onmouseover=function(){SetFocus(eles[i]);}})(i); 
/*Initial the value array*/ 
if(eles[i].value!=""){ 
_orientValue.push(eles[i].value); 
}else{ 
_orientValue.push(0); 
} 
if(eles[i].getAttribute("interval")){ 
_interval.push(parseFloat(eles[i].getAttribute("interval"))); 
if(eles[i].getAttribute("interval").toString().indexOf(".")>0){ 
var __length=parseInt(eles[i].getAttribute("interval").toString().length) - parseInt(eles[i].getAttribute("interval").toString().indexOf("."))-1; 
_length.push(__length);//get the length follow the decimal point 
}else{ 
_length.push(0); 
} 
}else{ 
_interval.push(1); 
_length.push(0); 
} 
} 
} 
/*set object focus*/ 
function SetFocus(obj){ 
obj.focus(); 
obj.select(); 
} 
/*remove the wheel scroll event*/ 
function RemoveScrollFunc(obj){ 
if(document.removeEventListener){ 
obj.removeEventListener('DOMMouseScroll',ScrollFunc,false); 
obj.removeEventListener('dblclick',RestoreOrientValue,false); 
}else if(document.detachEvent){ 
obj.detachEvent('onmousewheel',ScrollFunc); 
obj.detachEvent('ondblclick',RestoreOrientValue); 
} 
} 
/*Restore the text box's orient value when double click event trigger*/ 
function RestoreOrientValue(obj){ 
var eles=GetObj(); 
for(var i=0;i<eles.length;i++){ 
if(obj==eles[i]){ 
obj.value=_orientValue[i]; 
obj.select(); 
} 
} 
} 
//core function 
function ScrollFunc(){//for HTML DOM 
var direct=0; 
var e=arguments[0]||window.event; 
if(window.event){ 
window.event.returnValue=false; 
window.event.cancelBubble=true;//Stop event bubble 
} 
if(e.wheelDelta){ 
direct=e.wheelDelta>0?1:-1; 
} 
ScrollText(arguments[1],direct); 
} 
//reference by ScrollFunc 
function ScrollText(obj,direct){ 
obj.focus(); 
var _value=0; 
if(obj.value!=""){ 
_value=parseFloat(obj.value); 
} 
var eles=GetObj(); 
for(var i=0;i<eles.length;i++){ 
if(obj==eles[i]){ 
if(direct>0){ 
_value+=_interval[i]; 
}else{ 
_value-=_interval[i]; 
} 
obj.value=_value.toFixed(_length[i]);//calulcate the rounding result 
obj.select();//set select status 
} 
} 
} 
//referenced function,only get the object which has the 'rel' attribute 
function GetObj(){ 
var objs=document.getElementsByTagName('input'); 
var elements=[]; 
for(var i=0;i<objs.length;i++){ 
if(objs[i].type=='text' && objs[i].getAttribute('rel') == 'wheel'){ 
elements.push(objs[i]); 
} 
} 
return elements; 
} 
//Add the WheelScroll function 
(function AddLoadEvent(func){ 
var _oldonload=window.onload; 
if(typeof window.onload!='function'){ 
window.onload=func; 
}else{ 
window.onload=function(){ 
_oldonload(); 
func(); 
} 
} 
})(InitScrollFunc);

效果图
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
资源
点击预览 http://demo.3water.com/js/cutePSWheel/demo.html
下载代码
Javascript 相关文章推荐
javascript Object与Function使用
Jan 11 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
浅析JavaScript中的typeof运算符
Nov 30 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
JQuery中的事件及动画用法实例
Jan 26 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
javascript容错处理代码(屏蔽js错误)
Jan 20 Javascript
js 动态生成html 触发事件传参字符转义的实例
Feb 14 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
Oct 15 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 Javascript
JavaScript 精粹读书笔记(1,2)
Feb 07 #Javascript
一些mootools的学习资源
Feb 07 #Javascript
Js 中debug方式
Feb 07 #Javascript
为调试JavaScript添加输出窗口的代码
Feb 07 #Javascript
JavaScript 读取元素的CSS信息的代码
Feb 07 #Javascript
js png图片(有含有透明)在IE6中为什么不透明了
Feb 07 #Javascript
JavaScript Event学习第八章 事件的顺序
Feb 07 #Javascript
You might like
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
python进阶_浅谈面向对象进阶
2017/08/17 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
Python如何解除一个装饰器
2020/08/07 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
python opencv实现图像配准与比较
2021/02/09 Python
美国著名手表网站:Timepiece
2017/11/15 全球购物
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
护理专业学生的求职信范文
2013/12/11 职场文书
大型车展策划方案
2014/02/01 职场文书
护士毕业实习感言
2014/03/05 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
2015年预算员工作总结
2015/05/14 职场文书
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫
SQL Server中搜索特定的对象
2022/05/25 SQL Server