`
jindw
  • 浏览: 508336 次
  • 性别: Icon_minigender_1
  • 来自: 初到北京
社区版块
存档分类
最新评论

从零开始 Spinner(微调器)装饰器开发:

阅读更多

Spinner(微调器)装饰器开发:

<o:p></o:p>组件介绍:

仿照 window时间日期管理中,年份调节的控件,原型是一个文本输入筐,一般用于数字输入。筐后有上下微调按钮,用于增减控件值。
<o:p></o:p>这种控件在
backbase框架中也有出现,JSIspinner就是仿照其外形设计。

显示效果:<o:p></o:p>


在线演示见:http://www.xidea.org/project/jsi/decorator/spinner.html

代码:

org/xidea/decorator/spinner.js
 
  1. /** 
  2.  * @public 
  3.  * @decorator spinner 
  4.  * @attribute start 
  5.  * @attribute end  
  6.  * @attribute step 
  7.  */  
  8. function Spinner(){  
  9. }  
  10.   
  11. Spinner.prototype = new Decorator();  
  12. Spinner.prototype.decorate = function(){  
  13.   this.start = parseInt(this.attributes.get('start'))  
  14.   this.end = parseInt(this.attributes.get('end'))  
  15.   this.step = parseInt(this.attributes.get('step'))||1;  
  16.   var container = this.getContainer();  
  17.   var table = document.createElement('table');  
  18.   var outerDiv = document.createElement("div");  
  19.   var upDiv = document.createElement("div");  
  20.   var downDiv = document.createElement("div");  
  21.   table.border = 0;  
  22.   table.cellSpacing=0;  
  23.   table.cellPadding=0;  
  24.   container.insertBefore(table,container.firstChild);  
  25.   var row = table.insertRow(0);  
  26.   var cell = row.insertCell(0);   
  27.   var ele = table.nextSibling;  
  28.   do{  
  29.     container.removeChild(ele);  
  30.     cell.appendChild(ele);  
  31.   }while(ele = table.nextSibling)  
  32.   cell = row.insertCell(1);  
  33.   cell.style.verticalAlign = 'middle',  
  34.   cell.appendChild(outerDiv);  
  35.   outerDiv.style.position = 'relative'  
  36.   outerDiv.style.top = '0px'  
  37.   outerDiv.style.left = '0px'  
  38.   outerDiv.style.height = '0px'  
  39.   outerDiv.style.width = '0px'  
  40.   outerDiv.style.zIndex= 2;  
  41.   //outerDiv.style.border= "solid 1px red";  
  42.   outerDiv.appendChild(upDiv);  
  43.   initializeHandleDiv(this,upDiv);  
  44.   outerDiv.appendChild(downDiv);  
  45.   initializeHandleDiv(this,downDiv);  
  46.   //alert(this.start+'/'+this.end+'/'+this.step+':'+(this.start<0))  
  47. }  
  48. Spinner.prototype.jump = function(offset){  
  49.   if(offset){  
  50.     var input = this.getContainer().getElementsByTagName('input')[0];  
  51.     var value = value = input.value * 1 + offset*this.step;  
  52.     if(value>this.end){  
  53.       value=this.end;  
  54.     }else if(value<this.start){  
  55.       value = this.start;  
  56.     }  
  57.     input.value = value;  
  58.   }  
  59. }  
  60. /** 
  61.  * @internal 
  62.  */  
  63. var imagePath = 'url("'+this.scriptBase + 'spinner.gif")';  
  64. /** 
  65.  * @internal 
  66.  */  
  67. function initializeHandleDiv(spinner,handleDiv){  
  68.   var position = 0;  
  69.   var style = handleDiv.style;  
  70.   style.backgroundImage=imagePath;  
  71.   style.position='absolute';  
  72.   style.width='12px';  
  73.   style.height='8px';  
  74.   style.margin='1px';  
  75.   style.left = '-14px'  
  76.   style.overflow = 'hidden'  
  77.   if(handleDiv.previousSibling){  
  78.     style.backgroundPosition = '0 -32px';  
  79.     position = -32;  
  80.     style.top = '0px'  
  81.   }else{  
  82.     style.top = '-10px'  
  83.   }  
  84.   handleDiv.onmouseout = buildMouseHandle(spinner,position,0)  
  85.   position -= 8;  
  86.   handleDiv.onmouseup=handleDiv.onmouseover = buildMouseHandle(spinner,position,0)  
  87.   position -= 8;  
  88.   handleDiv.onmousedown = buildMouseHandle(spinner,position,0)  
  89.   handleDiv.onclick = buildMouseHandle(spinner,position,position<-32?-1:1)  
  90. }  
  91. /** 
  92.  * @internal 
  93.  */  
  94. function buildMouseHandle(spinner,imagePosition,offset){  
  95.   imagePosition = '0 '+imagePosition+'px';  
  96.   return function(){  
  97.     this.style.backgroundPosition = imagePosition;  
  98.     spinner.jump(offset);  
  99.   }  
  100. }  




使用方法见在 基于FCKEditor 开发JSI Editor装饰器已有详细介绍,不再叙述。

见:http://www.iteye.com/article/79063

  • 大小: 52.3 KB
分享到:
评论

相关推荐

    一款超洁净版支持小数的spinner微调器

    在Android应用开发中,Spinner能够提供一个简洁的交互方式,允许用户从一组预定义的选项中进行选择。这款“超洁净版支持小数的spinner微调器”显然是对原生Spinner控件进行了优化和扩展,特别强调了对小数的支持,这...

    jQuery EasyUI API 中文文档 - Spinner微调器使用

    总结来说,jQuery EasyUI的Spinner微调器是一个功能丰富、配置灵活的界面组件,它不仅能提供用户友好的交互,还大大提高了开发者的开发效率。通过理解和掌握Spinner微调器的使用,开发者可以更好地完成前端界面的...

    《Android开发从零开始视频教程》下载地址

    [Android开发从零开始].37.Spinner和Auto.Complete控件学习.mp4 52.7MB [Android开发从零开始].38.WebView控件学习.mp4 70.6MB [Android开发从零开始].39.Dialogs学习.mp4 59.9MB [Android开发从零开始].40....

    jquery ui spinner微调 粗细

    在IT行业中,jQuery UI是一个广泛使用的前端开发库,它提供了许多可交互的用户界面组件,如日期选择器、对话框、滑块等。其中,Spinner是jQuery UI中的一个功能组件,用于创建数字输入框,允许用户通过点击上下箭头...

    SPINNER:使用 3 个 uicontrol 创建一个简单的微调控件。-matlab开发

    SPINNER 从一个编辑框和两个按钮创建一个“微调器” SPINNER(PROP1,VAL1,PROP2,VAL2,...) 创建具有指定的微调器属性值。 特性: Position : 像素位置矩形,默认 [20 20 60 20] Min : 最小值,默认 0 Max : 最大值,...

    android-spinner:android中微调器输入的样板

    android-微调器 android中微调器输入的样板 要记住的事情,您需要实现 onItemSelectedListener 接口,然后在 public void onItemSelected( AdapterView&lt;?&gt; parent, View view, int pos, long id) { // An ...

    Android学习笔记九:基本视图组件:Spinner

    2. 初始化Spinner: 在Activity或Fragment的`onCreate()`方法中,通过`findViewById()`获取Spinner实例,并设置适配器(Adapter)来填充数据。常见的适配器有`ArrayAdapter`、`CursorAdapter`等。例如,使用...

    时钟微调器的设置

    在IT行业中,尤其是在嵌入式系统、硬件设计或者操作系统领域,时钟微调器的设置是一个关键环节。它涉及到系统的精确计时、同步以及性能优化。在这个“ssd4实验”中,我们聚焦于时钟界面和微调器的配置,以确保整个...

    tty-spinner:终端旋转器,用于具有不确定时间范围的任务

    TTY :: Spinner 终端微调器,用于具有不确定时间范围的任务。 TTY :: Spinner为工具箱提供了独立的微调器组件。安装将此行添加到您的应用程序的Gemfile中: gem "tty-spinner" 然后执行: $ bundle或自己安装为: $ ...

    react-svg-spinner:SVG微调器组件

    我需要一个根据周围环境缩放的愚蠢的微调器。 Docs n'的东西 安装 npm i -S react-svg-spinner import Spinner from "react-svg-spinner" ; 在浏览器中使用 &lt; script src =" ...

    nice-spinner:适用于Android的不错的微调器

    不错的微调器 NiceSpinner是默认Android微调器的重新实现,具有漂亮的箭头动画和不同的方式来显示其内容。 它遵循材料设计准则,并且从Api 14开始兼容。用法用法非常简单。 将标签添加到XML布局中: ...

    MaterialSpinner 自定义Spinner

    在Android开发中,Spinner是一个常用的组件,用于展示一个下拉选择菜单,通常用在需要用户从预设选项中选择一项的场景。然而,系统默认的Spinner样式和交互可能无法满足所有设计需求,这时我们就需要对其进行自定义...

    nice-spinner:NiceSpinner是默认Android微调器的重新实现,具有漂亮的箭头动画和不同的显示其内容的方式

    不错的微调器NiceSpinner是默认Android微调器的重新实现,具有漂亮的箭头动画和不同的显示其内容的方式。 它遵循材料设计准则,并且从Api 14开始兼容。用法用法非常简单。 将标记添加到XML布局中,然后使用此代码段...

    安卓开发使用edittext和list组合实现Spinner

    将创建的适配器设置给Spinner: ```java Spinner spinner = findViewById(R.id.spinner); spinner.setAdapter(adapter); ``` 5. 添加监听事件: 为了响应用户的选中操作,我们需要为Spinner添加一个...

    jQuery EasyUI API 中文文档 – Spinner微调器使用

    其中,Spinner(微调器)是一个用于数值输入和调整的组件,它允许用户通过上下按钮或直接在输入框内输入数值来调整值。Spinner组件是对原始validatebox组件的扩展,它继承了validatebox的基本功能,并增加了一些特有...

    vue-loading-spinner:另一个使用Vue.js加载微调器的集合,很多微调器

    vue-loading-spinner Vue.js的另一个加载微调器集合安装npm install --save vue-loading-spinner 或者yarn add vue-loading-spinner用法&lt; template&gt; &lt; div xss=removed&gt; &lt; rotate&gt;&lt;/ rotate&gt; &lt;/ div&gt;&lt;/ template&gt;&lt...

    react-md-spinner:React.js的Material Design微调器组件

    用于React.js的Material Design微调器组件。 实时示例: : 目录 安装 您可以从安装 。 $ npm i -S react-md-spinner # or $ yarn add react-md-spinner 产品特点 :rocket: 您可以从零配置开始使用! :...

    spinner:使用 Canvas 的灵活微调器

    使用 canvas 的灵活微调器, 一个分支。 看看! 安装 $ component install component/spinner 例子 var Spinner = require ( 'spinner' ) ; var spinner = new Spinner ; document . body . appendChild ( spinner...

    react-spinner:基于Material-UI加载微调器

    基于Material-UI加载微调器 安装 npm i -S @flatlinediver/react-spinner yarn add @flatlinediver/react-spinner 基本用法示例 import React from 'react' ; import Spinner from '@flatlinediver/react-spinner' ;...

    Bootstrap-input-spinner:Bootstrap 输入微调器

    #Bootstrap 输入微调器 使用向上/向下按钮增强用于输入数值的文本输入 安装 HTML 头: &lt;link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"/&gt; [removed]...

Global site tag (gtag.js) - Google Analytics