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 相关文章推荐
分享一个自己写的table表格排序js插件(高效简洁)
Oct 29 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
ie6下png图片背景不透明的解决办法使用js实现
Jan 11 Javascript
JavaScript实现复制功能各浏览器支持情况实测
Jul 18 Javascript
jQuery实现拖动剪裁图片作为头像
Dec 28 Javascript
javascript 操作cookies详解及实例
Feb 22 Javascript
Bootstrap Scrollspy源码学习
Mar 02 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
微信小程序progress组件使用详解
Jan 31 Javascript
详解vue中async-await的使用误区
Dec 05 Javascript
JavaScript实现图片放大镜效果
Jun 27 Javascript
浅谈JavaScript 声明提升
Sep 14 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
Python实现类继承实例
2014/07/04 Python
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
Python文件处理
2016/02/29 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
python输出决策树图形的例子
2019/08/09 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
python如何实现DES加密
2020/09/21 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
10条PHP编程习惯
2014/05/26 面试题
作为网站管理者应当如何防范XSS
2014/08/16 面试题
大学毕业生通用自荐信范文
2013/10/31 职场文书
医院护士的求职信
2014/01/03 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
详解Vue slot插槽
2021/11/20 Vue.js