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 相关文章推荐
ExtJs事件机制基本代码模型和流程解析
Oct 24 Javascript
javascript回车完美实现tab切换功能
Mar 13 Javascript
QQ空间顶部折页撕开效果示例代码
Jun 15 Javascript
JavaScript实现动态创建CSS样式规则方案
Sep 06 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
微信小程序 POST请求的实例详解
Sep 29 Javascript
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 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+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
表单内同名元素的控制
2006/11/22 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python机器学习之决策树算法
2017/12/22 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
python机器学习库xgboost的使用
2020/01/20 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
大四本科生的自我评价
2013/12/30 职场文书
农民工创业典型事迹
2014/01/25 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
售后服务承诺书
2014/03/26 职场文书
土地转让协议书范本
2014/04/15 职场文书
欢迎词怎么写
2015/01/23 职场文书
幼儿园大班教师评语
2019/06/21 职场文书