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 相关文章推荐
js prototype 格式化数字 By shawl.qiu
Apr 02 Javascript
javascript 流畅动画实现原理
Sep 08 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
Nov 30 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 jQuery
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 Javascript
vue单应用在ios系统中实现微信分享功能操作
Sep 07 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
PHP return语句的另一个作用
2014/07/30 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
python3爬取数据至mysql的方法
2018/06/26 Python
Sanic框架Cookies操作示例
2018/07/17 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
Python创建数字列表的示例
2019/11/28 Python
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
2014教师党员自我评议总结
2014/09/19 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电