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之软键盘实现(js源码)
Jan 30 Javascript
javascript日期转换 时间戳转日期格式
Nov 05 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 Javascript
AngularJS基础 ng-copy 指令实例代码
Aug 01 Javascript
jQuery在header中设置请求信息的方法
Mar 06 Javascript
基于vue的fullpage.js单页滚动插件
Mar 20 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
Oct 29 jQuery
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
基于JavaScript的数据结构队列动画实现示例解析
Aug 06 Javascript
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
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
浅析is_writable的php实现
2013/06/18 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
javascript中的Function.prototye.bind
2015/06/25 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
python3.6实现学生信息管理系统
2019/02/21 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
pytorch进行上采样的种类实例
2020/02/18 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
比较基础的php面试题及答案-编程题
2012/10/14 面试题
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
AJax面试题
2014/11/25 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
应届生护士求职信
2013/11/01 职场文书
优秀英语专业毕业生求职信
2013/11/23 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
大学生蛋糕店创业计划书
2014/01/13 职场文书
十八大闭幕感言
2014/01/22 职场文书
运动会跳远广播稿
2014/02/04 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
2015年大学生工作总结
2015/04/21 职场文书
基石观后感
2015/06/12 职场文书
付款证明格式范文
2015/06/19 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android