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多线程的实现方法
May 08 Javascript
window.location和document.location的区别分析
Dec 23 Javascript
javascript 函数调用规则
Aug 26 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
Aug 06 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
JS传参及动态修改页面布局
Apr 13 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
详解JavaScript按概率随机生成事件
Aug 02 Javascript
react实现移动端下拉菜单的示例代码
Jan 16 Javascript
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
vue 判断两个时间插件结束时间必选大于开始时间的代码
Nov 04 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之sphinx
2013/05/15 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
python使用socket连接远程服务器的方法
2015/04/29 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
优秀的自荐信要注意哪些
2014/01/03 职场文书
七年级数学教学反思
2014/01/22 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
大学迎新生标语
2014/10/06 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
高中军训感想
2015/08/07 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
JavaScript实现优先级队列
2021/12/06 Javascript
css3 选择器
2022/05/11 HTML / CSS